处理多个文件时,是否可以将每个输入文件的输出重定向到单独的文件?

处理多个文件时,是否可以将每个输入文件的输出重定向到单独的文件?

我执行这样的事情:

% command *bin > log.txt

*b扩展到a.bin, b.bin, c.bin

我希望每个文件的标准输出最终都在一个单独的文件中log.txt(或者更确切地说,a.txt、b.txt、c.txt)。我该怎么做呢?

在搜索时,我发现了很多关于通过处理一个文件生成多个日志文件的问题(例如,$ command a.bin > log1.txt log2.txt log3.txt),但没有任何适用于我的情况(它肯定存在,但我淹没在诸如括号内的情况之类的情况中)。

答案1

如果您想要单独的输出文件,则必须逐一处理这些文件。您无法通过重定向来做到这一点,因为STDOUT(STDERRSTDIN) 是由父进程在您的命令启动之前设置的,并且您的程序永远不会看到>log.txt.

做类似的事情:

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

相关内容