
一部のサブディレクトリには何千もの* csvファイルがあります。
単純なインライン実行ファイルを使用してこれらのファイルを処理し、新しいファイルにパイプします。
executable file1.csv standard.csv > output_file1.csv
file1.csv
forだけでなく、そのサブディレクトリ内のすべてのファイルに対してこれを行うために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
変数を使用してファイル名を参照することを忘れないでください。