Rm
文件失去時 rm 沒有報告嗎?
我有一個 bash 腳本,我想從各個目錄中刪除文件。通常,它們不會在那裡,因為它們不是生成的,這很好。有沒有辦法讓腳本不報告該錯誤,但如果 rm 有其他輸出來報告該錯誤?
或者,是否有更好的命令用於刪除噪音較小的文件?
使用該
-f
選項。它會默默地忽略不存在的文件。來自
man rm
:-f, --force ignore nonexistent files and arguments, never prompt
[“從不提示”部分意味著 (a)
-f
覆蓋任何先前指定的-i
或-I
選項,並且 (b) 防寫的文件將在不詢問的情況下被刪除。]例子
沒有
-f
,rm
會抱怨失去的文件:$ rm nonesuch rm: cannot remove ‘nonesuch’: No such file or directory
使用
-f
,它將保持沉默:$ rm -f nonesuch $
如果您的要求是
rm
不抱怨失去的文件,但您還想要任何其他輸出rm
,我的建議是首先測試目標文件的存在,並且僅在文件實際存在時呼叫rm
(不帶標誌-f
)。# rest of script # ... [ -e "$file" ] && rm "$file" # ... # rest of script
例如,呼叫
rm -f
沒有使用者寫入權限的文件將刪除該文件*,並且*也不會針對該場景發出正常提示。如果您想對多個文件使用相同的想法,我會創建一個函式定義,例如:
qrm() { for f do [ -e "$f" ] && rm "$f" done }
像這樣使用它:
qrm file1 file2-does-not-exist *.txt etc here