Shell-Script

循環遍歷給定子目錄中的所有文件,用循環文件命名輸出

  • March 7, 2017

我在某個子目錄中有數千個 *csv 文件。

有一個簡單的行內執行檔,我用它來處理這些文件,我將其通過管道傳輸到一個新文件中:

executable file1.csv standard.csv > output_file1.csv

我想創建一個 for 循環來執行此操作,而不僅僅是 for file1.csv,而是針對該子目錄中的所有文件。

我會嘗試這樣的事情:

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

我認為這會起作用,但是如何命名每個輸出output_++ $file.csv

此答案的原始草稿歸功於 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

只要記住用變數引用文件名。

引用自:https://unix.stackexchange.com/questions/349764