Bash

bash 腳本:從一個文件夾複製到一個目錄中的另一個文件夾,並在多個目錄中循環該過程

  • June 29, 2022

我仍然是 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. 這可以處理,但不在您的原始規範中。

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