スクリプトを使用してディレクトリ内のすべての.csvファイルを繰り返し、各ループの結果を別のディレクトリの別々の.csvに出力します。

スクリプトを使用してディレクトリ内のすべての.csvファイルを繰り返し、各ループの結果を別のディレクトリの別々の.csvに出力します。

私は、あるディレクトリで複数の.csvファイルを介してスクリプトを実行し、各ファイルの出力を別のディレクトリに送信する作業をしています。 .csvファイルを1つずつ実行できますが、スクリプトを見なければならないファイルが100個あります。個人的にはとても簡単です。ここから.csvファイルを抽出し、Test_Folderスクリプト出力を次のアドレスに送信しますResults

bash run_example.sh Test_Folder/df1.csv >> Results/results1.csv

ただし、すべてのエントリに対してループを実行しようとすると、他のディレクトリが原因でいくつかのエラーが発生します。私はいくつかの他のことを試しました。

for csvfile in Test_Folder/*.csv;
do
    bash run_example.sh $csvfile >> Results/test_results.csv
done

上記は明らかに機能しますが、test_results.csv各ループの後に上書きされます。

for csvfile in Test_Folder/*.csv;
do
    bash run_example.sh $csvfile >> "Results/results_${csvfile}.csv"
done

上記を実行しようとすると、次の問題が発生しました。

bash: Results/results_Test_Folder/df1.csv.csv: No such file or directory

$csvfileしたがって、ファイル自体だけでなくパスを使用しているようです。これは明らかに存在しないディレクトリを検索します。私は他のSE投稿を参照として使用して上記のコードの他のバリエーションを試しましたが、他のディレクトリに具体的に言及した投稿は見たことがありません。

入力ファイルresults.csvと同じ数のファイルで新しいディレクトリを作成しようとしていますresults1.csvresults2.csv各ループごとに増加し、出力ファイル名に追加される数字と同じくらい単純なものでさえも完全に機能します。どんな案内でも大変感謝します!

関連情報