Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
76
Help us understand the problem. What is going on with this article?
@mzmttks

シェルスクリプトの便利なワンライナー

More than 5 years have passed since last update.

要約

端末で一行でできる便利コマンドの組み合わせたちを紹介します。
登場コマンドは 6 つだけ: find, grep, sed, xargs, tree, watch

以下実例

[find] src/ 以下の、 .svn という名前の全ディレクトリを削除

find src -type d -name .svn -exec rm -rf {} \;
  • -type d はディレクトリ だけ取り出す。 -type f なら普通のファイルだけ。
  • -name .svn は完全一致。 "*" をワイルドカードに使える。
  • -exec はコマンド実行。 {} がファイル名に置換される。最後に \; をつける。

[find] src/ 以下の .tex を euc に変換

find src/ -name "*.tex" -printf "nkf -e %p > tmpfile && mv tmpfile %p \n"
  • -printf "..." で文字列をかける。 %p は フルパス。

nkf は --overwrite オプションで、直接変換可能。
find src/ -name "*.tex" -printf "nkf -e --overwrite %p"
nkf は iconv にしても OK。その場合は "nkf -e" --> "iconv -t euc-jp" に置換
Thanks nacht_666!

[find] src/ 以下の .txt の先頭に _ をつける

find src/ -name "*.txt" -printf "mv %p %h/_%f\n"
  • -printf "..." で文字列をかける。 %f はファイルだけ。%h はディレクトリだけ。

[find + grep] src/ 以下の .cpp ファイル のうち、 search の前後 3 行を確認

find src -name "*.cpp" -exec grep -H -A 3 -B 3 search {} \; 
  • grep -H でファイル名もわかる。
  • -A n -B m で 見つかった行の 前 n 行、 後 m 行も表示される。

[sed] subversion で 更新されたやつだけ削除

svn st | sed "s/?/rm -f/" | sh
  • s/AAA/BBB/ で、 各行の AAA を BBB に置き換える。

[xargs] src/ 以下の ファイルを10 並列で削除。

find src/ | xargs -n 1 -P 10 rm -f
  • -n が引数として取る個数。今回はファイル名だけなので 1
  • -P が並列するプロセス数
  • 最後のコマンドの後ろに、パイプで与えられた行が入って実行される。

[watch] 1秒ごとにログの最後の 10行を表示。

watch -n 1 tail -n 10 /var/log/syslog 

watch の例とははずれるけども、 tail に -f をつけると同じことができる
Thanks ykubota!

[watch] 5秒ごとにコンパイル、インストール

watch -n 5 make
watch -n 5 sudo python setup.py install

[tree] src/ 以下のファイルツリーを表示

tree src/
  • -d をつけるとディレクトリだけ表示

以前の関連する投稿

76
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mzmttks
ハイラブル株式会社の代表取締役。博士(情報学) カエルの研究をしてました。会話の定量化や分析をしてます。
hylable
対面とオンラインの話し合いを可視化するクラウドサービスを開発・運営するスタートアップです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
76
Help us understand the problem. What is going on with this article?