基本的な使い方
xargsは以下のように記述することで前のコマンドの実行結果を標準入力から受け取って、次のコマンドの引き数に渡して実行できます。
find.-name"*.log"| xargsrm-fv
上記の場合にはfindコマンドで取得したすべてのファイルパスに対してrmコマンドが実行されます。
以下のようなコマンドが実行されます。
rm-fv./path/to/sample1.log ./path/to/sample2.log ./path/to/sample3.log
ドライラン( dry run )
-pをつけると実際にはコマンドは実行されず実行される予定のコマンドの内容が出力されます。
$ find.-name"*.log"| xargs-prm-fvrm-fv./path/to/sample1.log ./path/to/sample2.log ./path/to/sample3.log?...
引数の位置を指定
以下のように記述することで引数の位置を指定できます。
find.-name"*.log"| xargs-icp{}/exampledir/
以下のようなコマンドが実行されます。
cp./path/to/sample.log /exampledir/
また以下のように記述しても上記と同様のことが実現できます。
find.-name"*.yml"| xargs-IXXXcp-fXXX ./exampledir/
引数の最大数を指定
-L 数値を追記するとコマンドに一度に渡す引数の最大数を指定できます。
find.-name"*.log"| xargs-L1rm-fv
上記の場合にfindコマンドで3つのパスを取得したとすると以下のように実行されます。
$ rm-fv./path/to/sample1.log$ rm-fv./path/to/sample2.log$ rm-fv./path/to/sample3.log
なお-L 数値は改行ごとに1つの引数として扱います。
-n 数値でも引数の数を指定できますがこちらはxargsがコマンドに渡す引数の最大数を指定します。
$ seq-s' '10 | xargs-L2echo TT 1 2 3 4 5 6 7 8 9 10$ seq-s' '10 | xargs-n2echo TT 1 2T 3 4T 5 6T 7 8T 9 10
同時実行の最大数を指定
-P 数値を追記すると同時実行の最大数を指定できます。
find.-name"*.log"| xargs-L1-P2rm-fv
上記の場合にfindコマンドで3つのパスを取得したとすると1つ目と2つ目が同時実行されその後に3つ目が実行されます。
网友评论