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
- 原因
- 嘗試將目錄移動到其自身的子目錄,形成循環。
- 解法
- 確認目的地路徑不在來源目錄之內。