为什么这个命令会删除所有内容?

zig*_*ggy 4 unix find

我在 Unix 机器上运行这个命令:

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

我想CVS从当前目录中删除任何目录中调用的任何文件,它删除了所有内容。

幸运的是,我所要做的就是从 CVS 再次签出。想象一下,如果我指定/为起始目录!

我认为原因是我使用了name而不是-name. 我只是重新运行它

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

它似乎工作正常。如果name使用而不是 ,究竟会发生什么-name

Arj*_*jan 7

您之前缺少破折号-name,因此它正在寻找名为, and 的路径,其中点引用当前文件夹,因此删除所有。.nameCVS

find 实用程序针对列出的每个路径递归地沿目录树下降。

您可以echo在要运行的命令之前使用,轻松进行测试:

找 。名称 CVS -exec echo rm -fr {} \;