查找-name中的双引号有什么作用?

cei*_*cat 1 bash find

我对bash中的命令查询有疑问.我试图删除所有名为Cache的目录.

这会找到所有名为"Cache"的目录/文件

find . -name "Cache" -print
Run Code Online (Sandbox Code Playgroud)

但这并没有删除它们,我发现一堆错误,发现"没有这样的文件或目录".

find . -name "Cache" -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

但这很有效

find . -name Cache -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

没有空格或任何非字母数字字符.谁能帮我理解发生了什么?谢谢.

Ign*_*ams 5

这与引号无关.你得到"没有这样的文件或目录"的原因是因为目录正在被删除,但是由于你忘了使用-prune它们,它们正在进入.当然,由于它们不再存在,您现在正在收到错误消息.

find . -name "Cache" -exec rm -rf {} \; -prune
Run Code Online (Sandbox Code Playgroud)