在 Linux 中將所有檔案從一個位置複製到另一個位置,而不複製目錄本身

在 Linux 中將所有檔案從一個位置複製到另一個位置,而不複製目錄本身

我想將目錄中的部分或全部檔案複製test/A/到目錄test/B/,但不複製目錄 A 本身。

我嘗試了該命令cp -R test/A/ test/B,但它也複製了目錄和檔案並變成test/B/A/...

答案1

當您指定 時test/A/,您告訴 Bash 複製目錄本身。

若要僅複製目錄的內容,請使用*全球:

cp -R test/A/* test/B

在這裡,*將匹配 A 中的所有文件,除了有點前綴的隱藏文件,例如.htaccess.要將這些內容也包含在*,shopt -s dotglob之前調用。

答案2

為了在本地或遠端獲得相同的副本,我更rsync喜歡cp.這使您可以更好地控制應在來源或目標上複製甚至刪除的內容(如果需要)。順便修復了隱藏檔案(又稱.*)的問題。基本用法就像使用一樣簡單cp

複製目錄A及其內容以B使用:

rsync -va test/A test/B

複製目錄內容A(包括隱藏檔案)以B使用:

rsync -va test/A/ test/B

如果 B 不存在則創建

相關內容