在文件夹中的所有文件上运行可执行文件(包含子文件夹)

时间:2013-11-27 01:41:15

标签: bash shell

我有一个可执行文件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}的子文件夹下}}

2 个答案:

答案 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发现