今回はxargsコマンドについて説明しようと思います。
xargsコマンドは標準入力から受け取ったものを別のコマンドに引数として渡すコマンドになります。引数というのは例えば「cat ○○」や「touch ○○」等のコマンドにある○○の部分です。引数を指定するだけならxargsを使わなくても可能です。ではどういった使い方をするコマンドなのかについて具体例を用いながら説明していきます。
まずxargsの基本的な書式は下記のようになります。
xargs 【オプション】 コマンド
上記の入力をすると、標準入力からの入力待ち状態となります。つまり、ユーザー側から入力したものをそのままコマンドに渡す状態です。これではあまり使い方に幅が無いので、|(パイプライン)と組み合わせて下記のようによく使われています。
コマンド1 | xargs 【オプション】 コマンド2
上記の入力をするとコマンド1の出力結果をコマンド2の引数として渡し、実行することができます。xargsの主なオプションを下記に示します。
-a・・・標準入力の代わりにファイルからの引数入力をする
-I・・・コマンドに引数を渡す位置を指定することができる。
-p・・・コマンドを実行するかどうかを実行前に確認するようになる。
-P・・・コマンドを並行実行する数を指定する。
xargsを用いた具体的なコマンド例をいくつか下記に示します。
find . -type f | xargs cat
→カレントディレクトリ内にある全てのファイル内容をつなげて表示します。自分が作業しているフォルダ内のファイル文章をすべて表示し、ソートしたい場合等に使用できます。
find . -name '*.memo' -type f | xargs rm
→カレントディレクトリ内の末尾が「.memo」で終わるファイルをすべて削除できます。
cat filelist.txt | xargs touch
→「filelist.txt」に記載があるファイル名をtouchコマンドに渡して、ファイル名毎にファイルを作成することができます。ただし、「filelist.txt」にはファイル名毎に改行して記載する必要があります。
参考資料
・xargs – 標準入力と引数を組み合わせコマンドを実行する | Linuxコマンド.NET (linuxcommand.net)
・覚えると便利、xargsコマンドの使い方12選 | TECH+(テックプラス) (mynavi.jp)
・【Linuxコマンド基礎】xargsがわからない!→基礎中の基礎を解説します。 | Web Apps Labo (e-seventh.com)