Bash脚本 - 输入多个文件以运行

时间:2018-05-25 12:25:11

标签: bash

我有一系列包含多个文件的文件夹:

-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)

2 个答案:

答案 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
}