複数のファイルを処理するときに、各入力ファイルの出力を別々のファイルにリダイレクトできますか?

複数のファイルを処理するときに、各入力ファイルの出力を別々のファイルにリダイレクトできますか?

私は次のようなことをします:

% command *bin > log.txt

*ba.bin、、、b.binに展開しますc.bin

log.txt各ファイルの標準出力が別々のファイル(またはa.txt、b.txt、c.txt)で終わります。どうすればいいですか?

検索して1つのファイル(例)を処理して複数のログファイルを生成する方法に関する多くの質問がありましたが、私の$ command a.bin > log1.txt log2.txt log3.txt場合は該当するものはありません(明らかに存在しますが、括弧内のケースの状況などの質問に陥っています) 。

ベストアンサー1

別の出力ファイルが必要な場合は、そのファイルを1つずつ処理する必要があります。STDOUTSTDERRおよびSTDIN)は、コマンドが開始される前に親プロセスによって設定され、プログラムではこれを見ることができないため、リダイレクトを使用してこれを行うことはできません>log.txt

次のようにしてください。

for i in "*.txt" ; do
    j="${i}.log"
    command "$i" >"$j"
done

おすすめ記事