我有一个可执行文件test
,它以.txt
个文件作为输入,例如,我们可以在终端./test input.txt > result.txt
中运行
我还有一个文件夹folder
,其中包含子文件夹和.txt
个文件。
我想编写一个bash来执行以下任务:遍历.txt
内的所有folder
,在其上运行可执行文件,并将结果放在一个单独的文件中。
例如,对于folder\subfolder1\01-input.txt
,我想将结果放在名为subfolder1_01-input.txt
的文件中(结果不一定如此命名,这些名称仅用于区分结果并允许我追溯到相应的输入文件)。
所有结果都可以放在一个名为results
的大文件夹中。
有谁知道怎么写这个bash?
首先,为了简化问题,我们可以假设:folder
中只有1级子文件夹,所有.txt
输入都放在{{1}的子文件夹下}}
答案 0 :(得分:1)
for foldername in folder/*; do cd "$foldername"; for filename in *.txt; do ../../test "$filename" > output_"$filename"; done ; cd ../..; done
请注意输出文件名不符合您的规范,此练习留给读者;-)
答案 1 :(得分:-1)
find $topleveldir -type f -exec sh -c 'file="{}"; log="${file//\//_}".txt; log="${log/#.}" ; echo $file $log ; ./test $file > $log' \;
如果有疑问,请将重定向放在脚本包装器中,然后执行原始-exec即
find $toplevel -type f -exec testwithitsownrediect.sh {} \;
我假设bash and gun发现