我在某个子目录中有数千个 *csv 文件。
我用一个简单的内嵌可执行文件来处理这些文件,并将其通过管道传输到一个新文件中:
executable file1.csv standard.csv > output_file1.csv
我想创建一个 for 循环来执行此操作,不仅针对file1.csv
,而且针对该子目录中的所有文件。
我会尝试这样的事情:
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
只需记住用变量引用文件名即可。