为什么 find/rm -iname '*phpmyadmin' 不删除 phpMyAdmin-Version-XYZ.zip?

8 find rm

我有以下代码:

find ./ -iname '*phpmyadmin' -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

它会删除名为 的目录phpmyadmin,但不会删除名为phpMyAdmin-Version-XYZ.zip

即使我删除了-rf,它仍然不会删除它(可能是因为 -iname 的第二个问题不影响大小写不敏感)。

  1. 有没有办法删除单个 rm(文件、目录、软链接)中的任何 inode?
  2. 为什么添加-iname没有效果?

注意:我在man rm.

hee*_*ayl 31

问题是您正在使用模式匹配以phpmyadmin不区分大小写)结尾的文件*phpmyadmin。要获取包含字符串的任何文件phpmyadmin(不区分大小写),请使用-iname '*phpmyadmin*'

find ./ -iname '*phpmyadmin*' -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

也许在删除之前获取匹配的文件是明智的:

find ./ -iname '*phpmyadmin*'
Run Code Online (Sandbox Code Playgroud)

要回答您的第一个问题,rm用户空间中没有处理 inode 的选项。

  • 不要从答案中拿走任何东西,其中确实包括这一点,但只是想强调 OP 的命令没有 _delete_ zip 文件的原因是它没有 *find* 它,因为缺少尾随'*' 图案。 (8认同)
  • @GwynEvans 这也意味着 OP 在添加 `-exec` 参数之前没有测试 `find`。非常危险。 (3认同)