Rename
如何確定 mv 移動到目錄而不是替換目錄?
假設我有一個目錄
/hello
。然後我做
mv /hello /hello2
。我要搬進
/hello
去/hello2/hello
嗎?還是我要/hello
搬去/hello2
?似乎當我做這樣的事情時,我得到的結果不一致。
mv a b
如果是目錄或目錄的符號連結,則嘗試移入a
。否則,它將重命名(如果在不同的文件系統上,則複製和刪除)為.b``b``a``b
要獲得將文件移動到目錄中的一致結果,您可以執行以下操作:
mv file dir/.
如果
dir
不存在,你會得到一個錯誤,它不會重命名file
為dir
.
mv file dir/
也可以,但如果file
它本身是目錄類型並且dir
它本身不存在,則不能。另一方面,如果您想做 a
rename
而不必擔心目標文件是否作為目錄存在,使用 GNU mv,您可以執行以下操作:mv -T file dest
在這種情況下,如果是目錄,
file
則不會被移入。但是,如果兩者和都是目錄並且為空,則將被重命名為(並將原來的刪除)。如果兩者都是目錄並且非空,則會抱怨。dest``dest``file``dest``dest``file``dest``dest``dest``mv -T
同樣,如果
file
和dest
不是目錄(並且包括符號連結,包括指向目錄的符號連結),將file
被重命名為dest
(儘管如果您沒有對 的寫入權限,則會收到提示dest
),並且原始目錄dest
將被刪除。目錄符號連結mv file dest
的情況有所不同。dest
帶有-T
,file
被重命名為dest
, 但沒有-T
,file
被移動到 指向的目錄中dest
。總而言之,在 之後
mv -T file dest
,要麼file
將被重命名為,dest
要麼您將收到一條錯誤消息(或提示)。如果命令成功,原始的dest
,如果它之前存在,將被刪除。