在腳本所在的位置,我有多個子目錄,我想在其中對所有內容運行單個命令。內容也按升序編號。在具有10個以上項目的文件夾中使用for f in *
會導致在1..9
之前順序出現名爲10
或11
的文件。按數字順序處理文件
此外,每個子目錄中的文件數量在6到12個項目之間不等,所以我不認爲我可以簡單地執行像{1..12}
這樣的範圍操作,因爲我想避免關於不存在的文件的警告/錯誤。
問題:有沒有辦法強制或修改for循環遍歷文件夾中的所有內容不知道的文件夾內容的數量時保持遞增順序?
term="" # hold accumulated filenames
for d in */ ; do # iterate over sub-directories
cd $d
for f in * ; do # iterate over files in sub-directory
term="$term $f"
done
# run a command using the string $term
term=""
cd ..
done
邊注:我標記sh
,shell
和bash
因爲他們都適用於這個問題。在添加兩個標記之前,我閱讀Difference between sh and bash,以確保它是一個有效的選擇,即使存在一些語法/可移植性的變化等。
感謝@resc示例,它有幫助。 –