Rename

沒有指定目的地的 mv ./* 有什麼作用?

  • August 21, 2017

在按下 Return 鍵之前,我不小心忘記指定目的地。如果不mv ./*指定目標,將目前目錄下的文件和目錄移動到哪裡?

如果最後一個參數是一個目錄,那麼您只需將當​​前工作目錄中的所有文件和目錄(名稱以點開頭的除外)移動到該目錄中。如果有兩個文件,則第一個文件可能已覆蓋第二個文件。

以下是一些展示:

兩個以上的文件,最後一個參數是一個文件

$ mkdir d1 d2 d3
$ touch a b c e
$ mv *
mv: target 'e' is not a directory

兩個以上的文件,最後一個參數是一個目錄

$ mkdir d1 d2 d3
$ touch a b c
$ mv -v *
'a' -> 'd3/a'
'b' -> 'd3/b'
'c' -> 'd3/c'
'd1' -> 'd3/d1'
'd2' -> 'd3/d2'

兩個文件

$ touch a b
$ mv -v *
'a' -> 'b'

進一步說明

shell 將 glob( *) 擴展為mv. glob 通常按字母順序展開。mv總是看到文件和目錄的列表。它永遠不會看到 glob 本身。

該命令mv支持兩種移動方式。一個是mv file ... directory。另一個是mv old-file-name new-file-name(或mv old-file-name directory/new-file-name)。

引用自:https://unix.stackexchange.com/questions/84166