如何將包含內容的子資料夾移動到不同的來源資料夾而不進行複製?

如何將包含內容的子資料夾移動到不同的來源資料夾而不進行複製?

我知道這個問題已經被問了一百萬次,但我找不到我具體想做的事情的答案。

這是目錄結構:

Main Folder1
|
|-Subfolder 1
|-Subfolder 2 HasAReallyLongName
|---files
|-Subfolder 3-1000

Main Folder2
|
|-Subfolder 2 HasAReallyLongName
|---files
  • 我想嘗試將 Subfolder2 及其檔案移動到不同的目錄。
  • 我不想複製然後刪除任何內容,因為我沒有足夠的空間。
  • 我不想這樣做,mv /Main/Sub2/* /Main2/因為這會將所有內容放入/Main2資料夾中,而不是放在子目錄中。
  • 我不想這樣做,mkdir /Main2/...因為它的名稱很長(主要是時間戳),而且我不想手動輸入它(並且可能會弄亂它)
  • 據我所知,rsync也複製文件,所以我不確定它是否有效。

任何建議或其他工具將不勝感激!

答案1

這非常簡單。

mv /Main1/Sub2 /Main2

/Main2/Sub2這將建立包含原始目錄的所有內容的目錄,並刪除該目錄/Main1/Sub2。如果你不想輸入全名,可以使用 glob;當您輸入足夠的字元以將目錄名稱與目錄中的其他所有內容區分開來時,只需停止鍵入名稱並以結尾即可*(小心!):

mv /Main/Sub* /Main2

可能導致其無法如預期工作的可能問題:

  • 裡面已經有一個/Main2同名的目錄了/Main1/Sub2。這會導致錯誤directory not empty,因為mv拒絕覆蓋現有目錄。如果是這種情況,請先重新命名(或刪除)現有目錄/Main2

    mv /Main2/Sub2 /Main2/SomethingElse
    
  • 使用不正確的路徑。請記住,一切都區分大小寫,並注意相對路徑和~擴展。這些都會根據目前工作目錄而有所不同

    /Main1/Sub2
    Main1/Sub2
    ~/Main1/Sub2
    
  • 您無權寫入來源目錄和/或目標目錄。從錯誤訊息中可以非常明顯地看出這一點:mv: cannot move 'thing' to '/place': Permission denied。在這種情況下,您可以執行我最喜歡的命令來解決這個問題

    sudo !!
    

答案2

明白了:使用sudo mv /Main1/Sub2 /Main2對我來說是這樣。我想主要的區別是root。

相關內容