
私は次のようなことをします:
% command *bin > log.txt
*b
a.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つずつ処理する必要があります。STDOUT
(STDERR
およびSTDIN
)は、コマンドが開始される前に親プロセスによって設定され、プログラムではこれを見ることができないため、リダイレクトを使用してこれを行うことはできません>log.txt
。
次のようにしてください。
for i in "*.txt" ; do
j="${i}.log"
command "$i" >"$j"
done