我有一系列包含多个文件的文件夹:
-Scenario_1
---- file_1.txt
---- file_2.txt
---- file_3.txt
-Scenario_2
---- file_1.txt
---- file_2.txt
---- file_3.txt
我希望迭代每个文件夹,遍历文件并将函数应用于所有这些文件
build () {
for folder in ./scenarios/*; do
echo "Working on" $folder
`function` (space separated list of files in the folder) -o $folder/output.txt
done
}
build
作为示例命令,它看起来像这样:
function file_1.txt file_2.txt file_3.txt -o $folder/output.txt
我尝试了以下内容:
`$(find。iname $ folder / * .txt)
答案 0 :(得分:2)
find -iname
仅匹配基本名称(删除所有考虑匹配的文件的前导目录),因此您的表达式永远不会匹配任何内容。请改用-ipath
。
或者,如果你知道这些文件夹永远不会是空的并且不包含子目录,那么简单的globbing就足够了。有很多变种,例如这应该有效:
for folder in ./scenarios/*; do
(cd $folder && function * -o output.txt)
done
答案 1 :(得分:-1)
似乎你想要创建一个空格分隔的文件列表,' ls -1'将执行此操作,您可以指定搜索条件,即.txt文件。然后,您将拥有要在函数中使用的文件列表。
build
{
for folder in ./scenarios/*
do
filelist=`ls -1 *.txt`
`function` $filelist ....
done
}