Tecmint.comは8月10日(米国時間)、「12 Practical Examples of Linux Xargs Command for Beginners」においてxargsコマンドの使い方を紹介した。xargsは標準入力から受け取ったデータに対してコマンドを実施するといった用途で利用するコマンド。パイプラインで他のコマンドの出力を接続して処理をさせるといった使い方をすることが多い。
紹介されているxargsコマンドの使い方は次のとおり。
特定のファイルをtar.gzにまとめる方法
find ディレクトリパス -name '*.拡張子' -type f -print0 | xargs -0 tar -cvzf ファイル名.tar.gz
lsコマンドの出力を1行にまとめる方法
ls -1 ディレクトリパス | xargs
システムを使っているユーザリストを1行にまとめる方法
cut -d: -f1 < /etc/passwd | sort | xargs
複数のファイルに対してwcコマンドを個別に実行する方法
ls *キーワード* | xargs wc
特定のディレクトリを再帰的に削除する方法
find ディレクトリパス -name "名前" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"
特定のファイルを削除する方法
find . -name "ファイル名" -type f -print0 | xargs -0 /bin/rm -v -rf "{}"
ファイルを複数のディレクトリにコピーする方法
echo ディレクトリパス1/ ディレクトリパス2/ | xargs -n 1 cp -v コピー元ファイルパス
ファイルを特定のディレクトリに名前を変えつつ移動する方法
find ディレクトリパス -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
特定のファイルを除いてほかのファイルを削除する方法
find . -type f -not -name '*gz' -print0 | xargs -0 -I "{}" rm -v "{}"
ファイルにアイテム一覧を書いておいて適用する方法
xargs -a リストファイルパス
実行するコマンドを実行前に標準エラー出力に出力させる方法
find ディレクトリパス -name "名前" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"
実行前に確認プロンプトを表示させる方法
echo ディレクトリパス1/ ディレクトリパス2/ | xargs -p -n 1 cp -v コピー元ファイルパス
記事で紹介されている方法のいくつかは、xargsコマンドを使わなくてもコマンドの引数に指定することで実行させることが可能だ。しかし、xargsコマンドを利用すると引数の上限数を気にすることなく利用できるようになるという利点がある。引数に渡される数がオペレーティングシステムの提供している上限を超える場合は、xargsを利用することで問題を回避できる。