Linux

linux + find + 刪除文件,警告“文件 <file_name> 已刪除”

  • January 17, 2018

我們可以find使用部分文件名刪除文件

find -type f -name '*file_name*' -delete

我需要在上面的語法中添加什麼才能列印文件被刪除並帶有完整文件名的消息?

find可以採取多個“動作”,實際上,它們都可以作為條件起作用。-name "*something*" -delete -print-name "*something*" -a -delete -a -printwhere-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" \)

只需添加-print選項

find -type f -name '*file_name*' -print -delete

或者-ok在刪除前需要確認的情況下使用(每個文件的確認)

find -type f -name '*file_name*' -ok rm -- {} \;

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