在 OS X 中使用“mv”或“ditto”合併資料夾

在 OS X 中使用“mv”或“ditto”合併資料夾

習慣了 Windows 的做法,我剛剛發現 OS X 沒有合併功能 - 移動意味著替換資料夾。雖然這確實有道理,但我懷念合併!


我有兩個 WordPress 目錄,1 個包含預設原始程式碼,2 個包含帶有外掛程式自訂主題等的工作版本。

我想看看這兩者之間的區別,所以我把它放在 SVN 上。資料夾 1 已經啟動,現在理論上我應該簡單地將 2 的內容與 1 合併,方法是將所有內容替換為 2 的內容,但保持隱藏的 SVN 檔案不變。

不幸的是,OS X 在移動時會替換該資料夾,因此我的 SVN 用戶端會變得瘋狂並且不再理解資料夾結構。

所以,我相信我的選擇是mvditto,但是在我的情況下您會使用哪一個以及如何使用?

sudo mv wordpress /Documents/svn/wwwholiday/trunk/wordpress

我想mv覆蓋它找到的所有內容,但保留資料夾 1 中已存在且資料夾 2 中沒有重複內容的內容。

答案1

以一種方式合併資料夾的最簡單方法,例如

合併資料夾 1 → 資料夾 2 中的所有內容

將是使用rsync.

rsync -avh folder1/* folder2/

這會:

  • 將僅存在於資料夾 1 及其子目錄中的所有檔案移至資料夾 2
  • 不是覆蓋資料夾 2 中的所有內容(如果已存在)
  • 覆蓋已更改的文件,除非你添加--ignore-existing選項
  • 不要從資料夾 2 中刪除任何內容,除非你添加--delete選項

請隨意根據您的情況進行調整(我猜,其中folder1folder2是相反的)。

您可以嘗試透過呼叫以下命令來查看該命令的作用:

rsync -avh --dry-run folder1/ folder2/

dry-run開關向您展示了它的作用。


不要忘記反斜線具有特殊意義,因此folder2/目的地與 不同folder2。請參閱 的線上說明頁面rsync以了解用法和更多選項。

還建議-P(根據--helpsame as --partial --progress)添加show progress during transferkeep partially transferred files(這對於失敗時的重試很有用)。

答案2

您可以按照@slhck 所說的那樣執行此操作,也可以只使用cp.

$sudo cp -R wordpress/ /Documents/svn/wwwholiday/trunk/wordpress

相關內容