使用模式找到目录并删除内容,而不是目录本身

使用模式找到目录并删除内容,而不是目录本身

我可以使用 find 命令中的模式遍历目录大小:

find . -name "results_*" -exec du -sm '{}' \;

现在我想删除这些目录的内容,但仍然保留这些目录本身(结果_*)以创建一个占位符,表明它们存在并且可以在备份中找到。

我怎么能这么做呢?

答案1

您可以改为匹配路径:

find . -path "*/results_*/*" -delete

或者,如果您find不支持-delete

find . -path "*/results_*/*" -exec rm -rf {} \; -prune

这会找到results_*其路径中的任何内容,不包括最后一个路径组件;因此,目录 match 的所有内容都results_*将被删除,但目录本身将被保留(除非它们本身位于匹配的目录中results_*)。

相关内容