xargs コマンドは、標準入力から読み取り、指定された引数ごとにコマンドを実行します。各引数はブランクで区切る必要があります。パイプ演算子は、最初のコマンドの出力を 2 番目のコマンドの入力にするために使用されます。 xargs コマンドは通常、find コマンドと一緒に使用して、ファイルまたはディレクトリの検索で見つかった各結果を処理します。
構文
xargs コマンドの一般的な構文は次のとおりです。
# command [options] [arguments] | xargs [options] {command}
/foo ディレクトリ内の .pdf 拡張子を持つすべてのファイルを削除するとします。 xargs を使用してプロセスを自動化できます:
# find /foo -type f -name "*.pdf" | xargs rm
find コマンドは、.pdf 拡張子を持つ /foo 内のすべてのファイルを検索し、結果を xargs コマンドにパイプします。結果はスペースで区切られているため、xargs コマンドは結果内の各ファイルに対して rm コマンドを実行し、ディレクトリ内のすべての PDF ファイルを削除します。
xargs コマンドには、以下に示すようにさまざまなオプションがあります:
オプション | 説明 |
---|---|
-I {置換文字列} | 標準入力の各行を単一の引数と見なします。 |
-L {行数} | 標準入力から指定された行数を読み取り、それらを 1 つの長い文字列に連結します。 |
-p | 各コマンドの前にユーザーにプロンプトを出します。 |
-n {引数の数} | 標準入力から最大数の引数を読み取り、コマンド テンプレートの最後に挿入します。 |
-E {文字列の終わり} | 標準入力の終わりを表します。 |
-t | コマンドを実行する前に、各コマンドを標準エラー出力に書き込みます。 |
-s {最大サイズ} | 引数リストの最大許容サイズを指定された文字数に設定します。 |
xargs コマンドの実行中に以下のエラーが発生した場合:
xargs: command not found
選択したディストリビューションに従って、以下のパッケージをインストールしてみてください:
OS 分布 | コマンド |
---|---|
OS X | brew install findutils |
Debian | apt-get install findutils |
Ubuntu | apt-get install findutils |
アルパイン | apk 追加 findutils |
Arch Linux | pacman -S findutils |
カリ Linux | apt-get install findutils |
Fedora | dnf install findutils-1 |
Raspbian | apt-get install findutils |
xargs コマンドの例
1. 入力データを引数として使用してコマンドを実行します:
# arguments_source | xargs command
2. 入力データに対して複数のチェーン コマンドを実行します。
# arguments_source | xargs sh -c "command1 && command2 | command3"
3. `.backup` 拡張子を持つすべてのファイルを削除します (`-print0` はヌル文字を使用してファイル名を分割し、`-0` はそれを区切り文字として使用します):
# find . -name '*.backup' -print0 | xargs -0 rm -v
4. 入力行ごとにコマンドを 1 回実行し、プレースホルダー (ここでは `_` でマーク) を入力行に置き換えます。
# arguments_source | xargs -I _ command _ optional_extra_arguments
5. 一度に最大 'max-procs' プロセスの並列実行。デフォルトは 1 です。`max-procs` が 0 の場合、xargs は一度にできるだけ多くのプロセスを実行します:
# arguments_source | xargs -P max-procs command