在具有美元名称的 Maven 本地存储库目录中 - 未解析的属性?我已经概述了我是如何得到几十个文件名中带有美元符号的目录的。
我试图用以下命令摆脱这些:
find . -type d -name "*\$*" -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)
它为每个目录提供了一条错误消息。但是目录和它们的内容从来没有少过。
所以我重试了/tmp
:
mkdir "\$adir"
find . -type d -name "*\$*" -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)
并再次出错
find: ./$adir: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如何在没有这样警告的情况下删除文件?
发生这种情况是因为在每个匹配的目录上find
执行rm -rf
,然后尝试进入该目录 - 但它已经消失了。
为了避免这种情况,并且不会收到相应的警告,您应该告诉find
修剪目录,这样它就不会尝试进一步处理它们:
find . -type d -name "*\$*" -exec rm -rf {} \; -prune
Run Code Online (Sandbox Code Playgroud)
由于rm
可以处理多个目录,您可以告诉一次find
删除多个目录:
find . -type d -name "*\$*" -exec rm -rf {} + -prune
Run Code Online (Sandbox Code Playgroud)