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

kst*_*stn 2 bash find

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

find . -name "results_*" -exec du -sm '{}' \;
Run Code Online (Sandbox Code Playgroud)

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

我怎么能这么做呢?

Ste*_*itt 5

您可以改为匹配路径:

\n
find . -path "*/results_*/*" -delete\n
Run Code Online (Sandbox Code Playgroud)\n

或者,如果您find不\xe2\x80\x99t 支持-delete

\n
find . -path "*/results_*/*" -exec rm -rf {} \\; -prune\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n