次のコマンドでパイプされた出力をエコーする方法はありますか?たとえば、テキストファイルからファイル名を読み取り、そのファイルに対してコマンドを実行できるとします。
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.txt
?file2.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
。正確な使い方、例、その他の詳細については、コマンドのマニュアルページを参照してください。