実行プログラムにファイル名を変数として渡すには?

実行プログラムにファイル名を変数として渡すには?

これは比較的簡単な質問でなければなりません。ループ内で実行可能なプログラムを介して複数のファイルを渡そうとします。複数の戦略(配列に保存など)を試しましたが、ファイル名が変数として認識されないようです。私が受け取るエラーは次のとおりです。そのファイルやディレクトリはありません。

私の最近の試みの概要:

FILES=path/*/*

for f in $FILES
do
./function -input $f 
done

私はbashシェルで作業しています。

答え1

globstarワイルドカード拡張シーケンスを保存するために通常の変数を使用する代わりに、適切な配列を使用してシェルワイルドカードオプションを有効にして、すべてのサブディレクトリのファイルを埋めることをお勧めします。

shopt -s globstar nullglob
file_list=(path/**/*)

配列ループを使用して各ファイルを処理します。

for file in "${file_list[@]}"; do
    printf '%s\n' "$file"
    # Your other actions on file goes here
done

関連情報