答案1
您有两种选择来获得您想要的结果:
for k in /path/to/*.txt; do
some_command -i "$k" >> /path/to/output.txt
done
或者
for k in /path/to/*.txt; do
some_command -i "$k"
done >> /path/to/output.txt
如果您的程序不写入标准输出,并且仅有的写入指定的文件-o
,您可以这样做:
for k in /path/to/*.txt; do
some_command -i "$k" -o /tmp/output.txt
cat /tmp/output.txt >> /path/to/real_output.txt
done
rm /tmp/output.txt
答案2
只是想到了一个更简单的解决方案。我只需要提供与输入相同的文件名作为输出。这解决了我的问题,因为所有更改都被附加并且旧的输出文件被备份。
谢谢
答案3
for name in ../some_directory/*.txt; do
outfile="$name"-out
command (containing -i "$name" -o "$outfile");
done
这将通过简单地将字符串附加到输入文件的名称来构造输出文件的名称-out
。
请注意,这outfile=out-"$name"
不起作用,因为$name
还包含文件名的路径。
你想在文件名前添加一个字符串吗?你可以这样做
outdir=${name%/*} # remove filename component from $name
outfile=out-${name##*/} # remove the path component from $name (and prepend string)
然后用作$outdir/$outfile
输出文件路径。