【Linux】標準入力を引数に渡して実行するコマンド:xargs

Linux

どーも!marusukeです!

標準入力からデータを受け取り、そのデータを引数として他のコマンドに渡すコマンドxargsについて説明します!

xargsの使い方

書式は以下のようになります

echo "引数" | xargs コマンド

または

コマンド① | xargs -I {} コマンド② {}

echo(またはコマンド①)の標準出力を、|(パイプ)で次のコマンドの標準入力にしたときに、xargsコマンド②の引数として渡すのが基本的な使い方です

ちなみに{}は置換文字列です。xargsでは-Iオプションを使うことで、標準入力の各値が{}に置き換えられます

xagrsコマンドの使用例

例1:ファイル削除

findコマンドで見つけた特定のファイルを削除する場合、以下のようにxargsを使ってrmコマンドに渡すことができます

find /path/to/dir -type f -name "*.log" -print0 | xargs -0 rm

このコマンドは/path/to/dir以下の.logファイルを探し、見つかったファイルを削除します

例2:大量のファイルに対するコマンド実行

grepを使って特定の文字列を含むファイルを検索し、それらのファイル名をxargsを使用してls -lに渡して詳細リストを表示する例です

grep -l "特定の文字列" *.txt | xargs ls -l

この例では、現在のディレクトリ内の.txtファイルから特定の文字列を含むものを検索し、見つかったファイルの詳細情報を表示します

xargsコマンドのオプション

  • -n [数値]: 一度にコマンドに渡す引数の数を制限します。これにより、コマンドが受け取れる引数の最大数を超える問題を防ぐことができます
  • -I {}: {}で指定した部分に入力を置換します。このオプションを使用すると、入力された各項目に対して指定したコマンドを実行することができます
  • -0または--null: 入力項目がNULL文字で区切られていることを指定します。ファイル名にスペースや特殊文字が含まれている場合に有効です
  • -pまたは--interactive: 各コマンドを実行する前にユーザーの確認を求めます。安全な操作に役立ちます

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました