mv — 移動或重新命名檔案

移動或重新命名檔案與目錄。

語法

mv [選項] 來源... 目的地

常用選項

選項 說明 範例
-i, --interactive 覆蓋前詢問確認 mv -i src dest
-f, --force 強制覆蓋,不詢問(預設行為) mv -f src dest
-n, --no-clobber 不覆蓋已存在的目的地檔案 mv -n src dest
-u, --update 只在來源比目的地新,或目的地不存在時才移動 mv -u *.txt dir/
-v, --verbose 顯示每個已移動的檔案 mv -v src dest
--backup[=CTRL] 覆蓋前先備份目的地 mv --backup=numbered file dir/

使用範例

範例 1:重新命名檔案

mv 用於重新命名:將 oldname.txt 改名為 newname.txt,在同一目錄下操作。

$ mv oldname.txt newname.txt
範例 2:移動檔案到另一個目錄

將 report.txt 移動到 ~/Documents/ 目錄,原始位置的檔案消失。

$ mv report.txt ~/Documents/
範例 3:移動目錄

移動整個目錄(含其所有內容),不需要 -r 選項(這是與 cp 的差異)。

$ mv project/ /var/www/html/
範例 4:批次移動多個檔案

使用 glob 樣式移動多個符合條件的檔案。最後一個參數必須是目的地目錄。

$ mv *.jpg ~/Pictures/
範例 5:互動模式(避免覆蓋)

使用 -i 在目的地已有同名檔案時詢問是否覆蓋。

$ mv -i config.conf /etc/
mv: overwrite '/etc/config.conf'? 
輸入 y 確認覆蓋,n 跳過。
範例 6:詳細模式(顯示操作)

加上 -v 可看到每個被移動的檔案的原始與目的地路徑。

$ mv -v *.log /var/archive/
renamed 'access.log' -> '/var/archive/access.log'
renamed 'error.log' -> '/var/archive/error.log'

常見錯誤與排錯

mv: cannot move 'src' to 'dest': Permission denied
原因
對來源或目的地目錄沒有適當的寫入/執行權限。
解法
使用 sudo mv 或調整相關目錄的權限。
mv: cannot stat 'filename': No such file or directory
原因
來源檔案或目錄不存在。
解法
先用 ls 確認來源存在,注意大小寫(Linux 區分大小寫)。
mv: cannot move 'dir' to a subdirectory of itself
原因
嘗試將目錄移動到其自身的子目錄,形成循環。
解法
確認目的地路徑不在來源目錄之內。

延伸閱讀