rm — 刪除檔案與目錄

刪除檔案或目錄(不可復原,請謹慎使用)。

語法

rm [選項] 檔案...

常用選項

選項 說明 範例
-r, -R, --recursive 遞迴刪除目錄及其所有內容 rm -r dir/
-f, --force 強制刪除,忽略不存在的檔案,不詢問 rm -f file
-i, --interactive 每次刪除前詢問確認 rm -i file
-I 刪除 3 個以上檔案或遞迴刪除時才詢問一次 rm -I *.log
-v, --verbose 顯示每個被刪除的檔案名稱 rm -v file
--no-preserve-root 允許對 / 操作(極度危險,切勿使用) (禁止)

使用範例

範例 1:刪除單一檔案

直接刪除指定的檔案,操作不可復原。

$ rm temp.txt
範例 2:互動模式刪除(安全)

使用 -i 在每次刪除前詢問確認,適合刪除重要檔案前的確認操作。

$ rm -i important.conf
rm: remove regular file 'important.conf'? 
輸入 y 確認刪除。建議習慣性使用 -i 避免誤刪。
範例 3:批次刪除符合條件的檔案

使用 glob 樣式刪除多個符合條件的檔案。

$ rm *.tmp
範例 4:遞迴刪除目錄

使用 -r 刪除整個目錄及其所有子目錄與檔案。此操作不可復原,務必確認路徑。

$ rm -r /tmp/build/
範例 5:強制遞迴刪除(謹慎!)

使用 -rf 強制刪除且不詢問,常用於清理無用的目錄。執行前務必確認路徑正確。

$ rm -rf ~/Downloads/old-project/
危險操作:路徑務必正確。切勿在 / 或 $HOME 等重要目錄上使用。
範例 6:顯示刪除過程

加上 -v 可看到每個被刪除的項目,適合確認刪除了哪些檔案。

$ rm -rv /tmp/cache/
removed '/tmp/cache/data.bin'
removed '/tmp/cache/index.db'
removed directory '/tmp/cache/'

常見錯誤與排錯

rm: cannot remove 'filename': No such file or directory
原因
指定的檔案不存在(可能已被刪除,或路徑有誤)。
解法
若不在乎檔案是否存在,加上 -f 選項可忽略此錯誤。
rm: cannot remove 'dirname': Is a directory
原因
嘗試刪除目錄但未加 -r 選項。
解法
使用 rm -r dirname/ 進行遞迴刪除。若只是空目錄,可改用 rmdir。
rm: cannot remove 'file': Permission denied
原因
對檔案或其所在目錄沒有寫入權限,或檔案設有不可刪除旗標。
解法
使用 sudo rm,或用 lsattr 確認是否有 i(immutable)旗標,再以 chattr -i 移除。
rm: it is dangerous to operate recursively on '/'
原因
嘗試對根目錄執行 rm -r,現代 Linux 工具已設保護阻止此操作。
解法
這是重要的安全機制,切勿繞過。再次確認目標路徑是否正確。

延伸閱讀