xargsなしでfindコマンドを実行するとしましょう。
find . -iname 'connect*' > cat output.txt
質問1. xargsコマンドを使用してfindコマンドの出力をテキストファイルにコピーするにはどうすればよいですか? 2.コマンドを使用することの利点は何xargs
ですか?>
次のいずれかを試しましたが、正しいようではありません。
find . -iname 'connect*' | xargs -t cat > output.txt
答え1
xargs
標準入力とコマンドラインから文字列を取得します。 stdinの文字列をコマンドラインの引数として使用してコマンドラインを実行します。基本的に間接参照を行っています。ファイル名のリスト(たとえば、作成済み)がある場合は、複数のテキストファイルから上位20の単語頻度リストを取得するのと同じようにfind
使用できます。xargs
find . -name '*.txt' | xargs cat | tr -s '[:blank:]' '\n' | sort | uniq -c | sort -k1.1nr | head -20
質問1のタスクを実行する価値があるかどうかはわかりません。私はそれができると確信していますが、なぜ面倒なのですか?これが質問2に対する答えです。パフォーマンスや意図の明確さの点で利点はありません。
一般的に使用の利点は、xargs
標準入力に入れるファイル名を決定する複雑な操作を実行できることです。find
作成時間や複数の名前などを追加できます。ファイル名の静的リストのみを使用すると、得られる利点が無効になります。xargs
ループで実行するcat
コマンドを使用または実行する方が良いです。xargs
答え2
xargsは出力ラインでコマンドを実行するのに役立ちます。たとえば、次のようになります。
find . -name '*.mp3' | xargs mp3info
findで見つかったファイルごとに(出力行など)
mp3info <filename>
処刑される
使いたいならみんなfind出力の場合、xargsはまったく必要ありません。