mv 是 linux 移動檔案或是目錄的一個工具程式, 但是在某個情境下, mv 會無法完成這件事情, 並發出以下訊息。
command unable to remove target: Directory not empty
|
fig 1 /tmp/o1, /tmp/b1 的目錄內容 |
當 o1/1 目錄有個檔案時, 以下指令就會失敗, 就算 o1/1/15 和 b1/1/ 目錄裡頭的檔案並沒有檔名重複。
descent@debian64:o1$ mv 1 /tmp/b1/
mv: cannot move ‘1’ to ‘/tmp/b1/1’: Directory not empty
ref:
- mv: Directory not empty
- mv: 无法将'.idea/' 移动至'~/.trash/.idea': Directory not empty
- 【Linux】mv命令全解析 原
ref 3 說明了檔案覆蓋情形, 那麼目錄呢?
ref 2 提供了 -b 參數, 但這可能不是我們要的。
list 1 是 info mv 的部份內容, mv --backup[=CONTROL] 的 CONTROL 就是 list 1 那些值。
descent@debian64:o1$ mv 1 /tmp/b1/
通常我們想要的結果是希望 /tmp/o1/1/15 被移動到 /tmp/b1/1/, 但是 list 1 的那些 option 都做不到這個效果, -b 會把 /tmp/b1/1/ 改成 tmp/b1/1~/, 然後吧 o1/1 移動到 /tmp/b1/, -b 相當於 mv --backup=simple 1 /tmp/b1/。
descent@debian64:o1$ ls /tmp/b1/
0 1 1~ 2 2.txt 3
這不是我們要的結果, 似乎只能改用 cp or rsync or tar 來完成這個效果, 再把原來的目錄刪除。
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。