我执行这样的事情:
% 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
(STDERR
和STDIN
) 是由父进程在您的命令启动之前设置的,并且您的程序永远不会看到>log.txt
.
做类似的事情:
for i in "*.txt" ; do
j="${i}.log"
command "$i" >"$j"
done