とっても便利なxargsコマンドとは
標準出力やファイルからリストを読み込み、任意のコマンドの引数として使わせることができる。
例えば
のように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.php、grep todo b.php、 grep todo c.phpの結果が一度に出力され、見た目上はオプションをつけない時と同じ表示になる