メモしよっと

なんでもメモするブログです。

xargsコマンド - Linux

とっても便利なxargsコマンドとは

標準出力やファイルからリストを読み込み、任意のコマンドの引数として使わせることができる。

例えば

find ./ -name '*.php' | xargs grep todo(検索文字)

のようにfindの標準出力をパイプでxargsに渡すと、grepの引数(対象ファイル)にfindの結果を使うことができる

grep 検索文字 対象ファイル名

代表的なオプション

オプション 説明
-a 標準出力ではなくファイルを読み取る
-d 文字 区切り文字の指定
-L 行数 1回のコマンドラインで使用する入力行数の上限
-n 1回のコマンドラインで使用する引数の上限
-s 1回のコマンドラインで使用する最大文字数
-P プロセス数 同時に実行するプロセス数の上限。0:無制限
-r 標準出力が空の場合は、つづくコマンドを実行しない
-p コマンド実行前に、コマンドを表示して実行の確認をとる

-p を使った場合

$ find ./ -name '*.php' | xargs -p grep todo
$ grep todo a.php b.php c.php d.php…

ここでyesと入力するとgrepの結果が表示され、noと入力するとgrepコマンドが実行されない。

-n を使った場合

$ find ./ -name '*.php' | xargs -p -n 1 grep todo
$ grep todo a.php …
$ grep todo b.php…
$ grep todo c.php…

ちなみに-pをつけない場合は、grep todo a.phpgrep todo b.phpgrep todo c.phpの結果が一度に出力され、見た目上はオプションをつけない時と同じ表示になる