
find
ファイル名の一部を使用してファイルを削除できます
find -type f -name '*file_name*' -delete
ファイル削除メッセージをフルファイル名で印刷するには、上記の構文に何を追加する必要がありますか?
答え1
-print
オプションのみ追加
find -type f -name '*file_name*' -print -delete
または削除前の確認が必要な場合に使用-ok
(ファイル別確認)
find -type f -name '*file_name*' -ok rm -- {} \;
答え2
find
いくつかの「対処」をとることができ、実際にはこれはすべて条件としても使用されます。 whereが表すものと-name "*something*" -delete -print
同じ-name "*something*" -a -delete -a -print
-a
そして、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" \)
答え3
削除時にファイル名全体を表示し、削除する前にファイル名全体を表示したい場合
find . -type f -iname "*file_name*" -print -exec rm -rvf {} \;