複数のファイルを含む一連のフォルダーがあります。
-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 件
スペースで区切られたファイルのリストを作成したいようです。「ls -1」がこれを行い、検索の基準、つまり.txtファイルを指定できます。次に、関数で使用するファイルのリストがあります。
build { for folder in ./scenarios/* do filelist=`ls -1 *.txt` `function` $filelist .... done }
find -iname
ベース名の一致のみ(一致と見なされるファイルの先頭のディレクトリが削除される)ので、式は何にも一致しません。-ipath
を使用する 代わりに。または、これらのフォルダーが決して空ではなく、サブディレクトリが含まれていないことがわかっている場合は、単純なグロビングで十分です。多数のバリアントがあります。これは動作するはずです: