エコパイプライン出力 [冗長]

エコパイプライン出力 [冗長]

次のコマンドでパイプされた出力をエコーする方法はありますか?たとえば、テキストファイルからファイル名を読み取り、そのファイルに対してコマンドを実行できるとします。

cat files.txt | xargs -I{} -d"\n" command 

コマンドが実行され、出力が端末に表示されます。ファイル名も印刷する方法はありますか?

入力ファイルに次のものが含まれているとします。

file1.txt
file2.txt

予想出力:

file1.txt
[output of command with file1.txt as input]
file2.txt
[output of command with file2.txt as input]

そして標準出力も得る方法はありますかfile1.txtfile2.txt

答え1

次のように関数を作成することをお勧めします。

Function()
{
cat file1.txt | xargs -I{} -d"\n" command >> /dev/console;
cat file2.txt | xargs -I{} -d"\n" command >>/dev/console;
}

答え2

catサブプロセスがあるので、使用する方がもっと作業です。 whileループを使用する方が速いと思います。

while read filename
do
# do something with $filename
done<file_to_be_processed

答え3

echo 利用可能なコンテンツを取得するために使用したいファイル名を取得するにはcat。柔軟性を維持するには(たとえば、コマンドをコマンドにcat files.txt置き換える)、通話を続行する必要がありますが、その時点でファイルのみを実行する必要があります。find ....xargs

 cat files.txt | xargs -L 1 /path/to/your_script

そしてyour_script

#!/bin/bash
echo $1
cat $1

答え4

シェルコマンドは、teeユーザーが要求した操作を正確に実行します(次のコマンドでパイプされた出力をエコーし​​ます)。tee()にパイプするだけですsome_command | tee。正確な使い方、例、その他の詳細については、コマンドのマニュアルページを参照してください。

関連情報