find - exec 删除带有美元的目录

find - exec 删除带有美元的目录

带有美元名称的 Maven 本地存储库目录 - 未解析的属性?我已经概述了如何得到几十个文件名中带有美元符号的目录。

我尝试使用以下命令摆脱这些:

find . -type d -name "*\$*" -exec rm -rf {} \;

它为每个目录提供了错误消息。但目录及其内容仍然消失了。

所以我重试了以下内容/tmp

mkdir "\$adir"
find . -type d -name "*\$*" -exec rm -rf {} \;

并再次出现错误

find: ./$adir: No such file or directory

如果没有这样的警告,如何删除这些文件?

答案1

发生这种情况是因为在每个匹配的目录上find执行rm -rf,然后尝试下降到该目录 - 但它消失了。

为了避免这种情况,并且不收到相应的警告,您应该告诉find修剪目录,以便它不会尝试进一步处理它们:

find . -type d -name "*\$*" -exec rm -rf {} \; -prune

由于rm可以处理多个目录,因此您可以告诉find一次删除多个目录:

find . -type d -name "*\$*" -exec rm -rf {} + -prune

相关内容