技術メモ

神奈川在住のITエンジニアの備忘録。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

xargs コマンド

これまで、

find . -name '*.txt' | xargs grep xxx

とかで何気なく使っていた xargs だが、xargs が必要な場合とそうでない場合が自分の中で明確になっていなかったので、ここで簡単にまとめる。

xargs は、受け取った「標準入力」を「引数」に変える働きをする。なので、xargs が必要なケースというのは、これに続くコマンドが引数を求めている場合ということになる。

つまり、「A | (xargs) B」という感じで、Aコマンドの結果を Bコマンドに流す場合、Bコマンドが標準入力を求める場合は xargs は必要なく、Bコマンドが (標準入力ではなく) 引数を求める場合は xargs が必要ということになる。

 

また、xargs コマンドには、「-I」オプションを使って、

xargs -I@ echo '[@!!]'

といった感じで、xargs が受け取った情報を任意の変数 (この場合は @ ) に入れて、それを扱うことができる。これが便利。