指定されたサブディレクトリ内のすべてのファイルを繰り返し、ループを介して出力名を指定します。

指定されたサブディレクトリ内のすべてのファイルを繰り返し、ループを介して出力名を指定します。

一部のサブディレクトリには何千もの* csvファイルがあります。

単純なインライン実行ファイルを使用してこれらのファイルを処理し、新しいファイルにパイプします。

executable file1.csv standard.csv > output_file1.csv

file1.csvforだけでなく、そのサブディレクトリ内のすべてのファイルに対してこれを行うためにforループを作成したいと思います。

私は次のことを試してみます:

for file in *.csv
do
    # run executable on "$file" and output 
    executable $file standard.csv > output
done

これはうまくいくようですが、各出力の名前をどのようにoutput_++に指定しますか$file.csv

ベストアンサー1

この回答の元のドラフトを提供してくれたBruno9779に感謝します。これは素晴らしい答えなので、なぜ自己削除したのかわかりません。

ほぼ自分でやりました。

destinationDir="/destination/path/here/"
if cd "$destinationDir"; then
    for file in *.csv;  do
        # run executable on "$file" and output 
        executable "$file" standard.csv > "${destinationDir}/output_${file}.csv"
    done
else
    echo "Unable to change to working directory."
fi

変数を使用してファイル名を参照することを忘れないでください。

おすすめ記事