複製目錄後如何從來源刪除目錄?

複製目錄後如何從來源刪除目錄?

我只是想移動目錄。我依次查看了 mv、cp 和 rsync,因為每個工具似乎都沒有在複製目錄後從原始程式碼中刪除目錄的選項。例如,當 src 和 dst 位於不同裝置上時,mv 需要文件,而不是目錄:

“設備間移動失敗:src 到 dst;無法刪除目標:是一個目錄”

也許最簡單的方法是使用額外的刪除命令,儘管我不想使用它,因為這會增加資料遺失的風險。

答案1

正如鮑伯所說。不幸的是,我(還)無法發表評論,所以我必須在這裡進行調整。我建議使用 Bobs 指令的稍微修改版本:

cp -rp source-dir target-dir && rm -r source-dir;

雙與號確保僅在第一個命令完成後才執行第二個命令成功地-- 如果複製由於某種原因失敗(例如目標磁碟區上沒有足夠的空間),那將是一件可怕的事情,並且來源將被刪除...

答案2

實際上,MV可以「移動」目錄;但它不能跨裝置或檔案系統移動。它運行得非常快,因為它所做的只是重新定義檔案指標;內容本身不會被複製。

因此,您需要兩個命令(複製然後刪除)。在我的 Solaris 系統上,我使用以下兩個指令來移動目錄:

cp -rp source-dir target-dir; rm -r source-dir;

請參閱手冊頁,確保您使用適合您的環境的正確語法以及處理可能存在的任何符號連結。

相關內容