推荐使用 find -name "PATTERN" -type f -delete,高效安全;首次执行前应先用 -print 预览;避免 -exec rm 或 xargs 等低效危险方式。

最快的方法是用 find 配合 -delete 动作,一步到位,不启动多个子进程,也不需要 xargs 或 rm -f 中转。
直接用 find -delete(推荐)
这是最简洁、高效、安全的方式,尤其适合大量文件:
find /path/to/dir -name "*.log" -delete-
find . -type f -name "*.tmp" -delete(加-type f可避免误删同名目录) - 注意:
-delete隐含-depth,会从下往上删,适合嵌套目录 - 首次使用建议先去掉
-delete,换成-print预览:find . -name "*.swp" -print
用 glob + rm(适合当前目录少量文件)
如果只删当前目录(不含子目录),shell 展开更快,但有文件数限制:
-
rm -f *.o(注意:若无匹配文件,会报错;可用shopt -s nullglob避免) -
rm -f **/*.pyc(启用shopt -s globstar后可递归,但性能不如 find) - 不推荐用于成千上万个文件——shell 展开会卡顿甚至失败
避免常见坑
这些写法看着快,其实慢或危险:
-
find ... -exec rm {} \;:每删一个文件都启动一次rm,极慢 -
find ... -exec rm {} +:比上一条好,但仍需 fork+exec,不如-delete -
ls *.log | xargs rm:含空格/特殊字符的文件名会出错,且ls是冗余步骤 - 没加
-type f时,-name "foo.*"可能匹配到目录,导致-delete删空整个子树
基本上就这些。核心就一条:用 find -name "PATTERN" -type f -delete,预览确认后再执行。










