Answers:
问题是您正在使用pattern 匹配以phpmyadmin
(不区分大小写)结尾的文件*phpmyadmin
。要获取任何包含字符串的文件phpmyadmin
(不区分大小写),请使用-iname '*phpmyadmin*'
:
find ./ -iname '*phpmyadmin*' -exec rm -rf {} \;
也许在删除之前获取匹配的文件是理智的:
find ./ -iname '*phpmyadmin*'
要回答您的第一个问题,rm
用户空间中没有处理inode的选项。
-depth
以便find
不要尝试递归到刚刚删除的目录中。
find
在添加-exec
参数之前没有测试过。非常危险。
-exec rm -rf {} +
-没有理由对rm
每个文件运行一个文件造成性能损失。
find ./ -iname '*phpmyadmin*' -exec /usr/lib/klibc/bin/nuke {} +
即使有人创建了-phpmyadmin目录,此方法也有效。
./
,因此不需要:它将执行rm -rf ./-phpmyadmin
,它可以与任何理智的东西一起使用rm
。尝试find ./ -iname '*whatever*' -exec echo '{}' ';'
测试
find */
而不是find .
,那会做到的(如果匹配的目录名称以短划线开头)。就是说,我倾向于建议通过在参数之前--
提供显式的选项结束来处理此类情况。(请参阅POSIX实用程序语法准则中的#10 )。{}
{} +
比效率更高{} \;
,因为它将只运行命令的nuke
所有实例(在这种情况下)以适应命令行上找到的所有项目,而不是每个实例。
find */
那么问题不会在中出现-exec
,带有连字符的目录似乎是一个find
选择,并且会抱怨。
find
支持,请尝试-delete
操作。(另请参见gnu.org/software/findutils/manual/html_node/find_html/…,详细讨论了许多错误执行此操作的方法。)