Linux
linux + find + 刪除文件,警告“文件 <file_name> 已刪除”
我們可以
find
使用部分文件名刪除文件find -type f -name '*file_name*' -delete
我需要在上面的語法中添加什麼才能列印文件被刪除並帶有完整文件名的消息?
find
可以採取多個“動作”,實際上,它們都可以作為條件起作用。-name "*something*" -delete -print
與-name "*something*" -a -delete -a -print
where-a
代表and相同,並且它的工作邏輯與&&
C 中的運算符相同,因此後一個命令/動作/測試僅在前一個成功時執行。因此,
-delete -print
將列印實際刪除的文件的名稱:$ mkdir test test/ro ; touch test/foo.txt test/ro/bar.txt; chmod 555 test/ro $ find test -name "*.txt" -delete -print find: cannot delete ‘test/ro/bar.txt’: Permission denied test/foo.txt
如果我們使用
-print -delete
,那麼列印將首先發生,並且find
還會輸出它無法刪除的文件的名稱。或者,如果您想要更詳細的輸出(GNU 查找):
$ find test -name "*.txt" -delete -printf 'deleted: %p\n'
我們甚至可以做這樣的事情來為已刪除和未刪除的文件獲取不同的消息(當然,通常的錯誤消息使這有點多餘):
$ find test -name "*.txt" \( -delete -printf 'deleted: %p\n' -o -printf "could not delete: %p\n" \)
只需添加
find -type f -name '*file_name*' -print -delete
或者
-ok
在刪除前需要確認的情況下使用(每個文件的確認)find -type f -name '*file_name*' -ok rm -- {} \;