Bash
bash 腳本:從一個文件夾複製到一個目錄中的另一個文件夾,並在多個目錄中循環該過程
我仍然是 bash 腳本的初學者。我正在嘗試循環複製命令以執行多個目錄。我有一組目錄,P1、P2、P3、..P60。在每個目錄中都有三個文件夾“A”、“M”和“out”。我想從 A 和 M 文件夾中復製文件並將它們粘貼到“out”文件夾中。然後在所有 60 個目錄中重複它。
‘AL’ 有一個名為 PIL_CBR.nii 的文件,而’M’ 有一個名為 PIL_MO.nii 的文件。
謝謝!
我假設 P1、P2、…、P60 目錄在同一個文件夾中。然後,您只需要遍歷此文件夾中的所有目錄並執行
cp
. 在此文件夾中執行以下腳本應該可以。for d in P*/ ; do echo "$d" cp $d/A/* $d/M/* $d/out/ done
您可能知道這裡 * 擴展為目前目錄中的文件和目錄名稱。
假設您的目錄完全按照您所說的命名,位於目前目錄中,並且每個目錄不包含數千個文件,這樣的事情應該可以工作:
for dir in P{1..60}/{A,M} ; do [ -d "$P" ] || continue cp "$dir"/* "${dir%[AM]}out/" done
使用
*
萬用字元選擇您的目錄可能會起作用,但會冒著匹配和更改您不期望的內容的風險。這應該只匹配您描述的確切項目集,但因此它對於您描述的情況非常具體,並且可能需要針對不同的輸入修改該方法。
如果您的兩個目錄中有文件名衝突,則 from 的內容
M
將替換A
. 這可以處理,但不在您的原始規範中。