循环遍历给定子目录中的所有文件,通过循环文件命名输出

循环遍历给定子目录中的所有文件,通过循环文件命名输出

我在某个子目录中有数千个 *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

只需记住用变量引用文件名即可。

相关内容