それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

xargs 実行するコマンドを表示してどこまで進んだかを見やすくする

xargs 便利ですよね。

コマンドを明示的に1つずつ実行したり、ファイルをまとめて実行したり。実行する子プロセス数(スレッド)を指定できたり。

まとめて処理しているときにどこまで処理しているかを見ながらやってほしい

たとえば、rsync の場合だと rsync --progress すると実行ファイルが見れるじゃん。あれをxargs でできると楽しそう。

オプション -t

次に実行するコマンドを表示してから実行してくれる -t を使うとできる

たとえば、画像を1000枚変換するときに、今何枚目を実行しているかわかる。

takuya@temp$ ls *.jpg  | xargs -t -I@ -P 1 mogrify -crop 2886x3700+0+0 @ 
mogrify -crop 2886x3700+0+0 out-000.jpg
mogrify -crop 2886x3700+0+0 out-001.jpg
mogrify -crop 2886x3700+0+0 out-002.jpg
mogrify -crop 2886x3700+0+0 out-003.jpg
mogrify -crop 2886x3700+0+0 out-004.jpg
mogrify -crop 2886x3700+0+0 out-005.jpg
mogrify -crop 2886x3700+0+0 out-006.jpg
mogrify -crop 2886x3700+0+0 out-007.jpg
mogrify -crop 2886x3700+0+0 out-008.jpg
mogrify -crop 2886x3700+0+0 out-009.jpg

もう ps をwatch しなくていい。

たくさんのファイルを処理中は、ps を見たりしてたんだけど、Verboseに今の実行コマンドをプリントして表示してくれるなら、めっちゃ便利。

参考資料

https://stackoverflow.com/questions/842401/is-xargs-t-output-stderr-or-stdout-and-can-you-control-it