Rm

文件失去時 rm 沒有報告嗎?

  • October 9, 2018

我有一個 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

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