web-dev-qa-db-ja.com

find / rm -iname '* phpmyadmin'がphpMyAdmin-Version-XYZ.zipを削除しないのはなぜですか?

私はこの次のコードを持っています:

find ./ -iname '*phpmyadmin' -exec rm -rf {} \;

phpmyadminというディレクトリを削除しますが、しないphpMyAdmin-Version-XYZ.Zipというファイルを削除します

-rfを削除しても、削除されません(おそらく、-inameの2番目の問題が大文字と小文字の区別に影響を与えないためです)。

  1. 単一のrm(ファイル、ディレクトリ、ソフトリンク)のiノードを削除する方法はありますか?
  2. -inameを追加しても効果がないのはなぜですか?

注:man rmに「deleteanyinode」引数が見つかりませんでした。

8
user149572

問題は、パターン*phpmyadminを使用して、phpmyadmincase-insensitively)で終わるファイルを照合していることです。文字列phpmyadmin(大文字と小文字を区別しない)を含むファイルを取得するには、-iname '*phpmyadmin*'を使用します。

find ./ -iname '*phpmyadmin*' -exec rm -rf {} \;

おそらく、削除する前に一致したファイルを取得するのは正気でしょう。

find ./ -iname '*phpmyadmin*'

最初の質問に答えるために、ユーザースペースのrmにはiノードを処理するオプションがありません。

31
heemayl
find ./ -iname '*phpmyadmin*' -exec /usr/lib/klibc/bin/nuke {} +

これは、誰かが-phpmyadminディレクトリを作成した場合でも機能します。

2
Joshua