查找并删除给出错误状态

查找并删除给出错误状态

我尝试按照之前的许多讨论执行删除查找并删除

然而我的尝试带来了不同的体验。

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

删除指定的文件夹koko但给我误报

find: ./koko: No such file or directory

我的终端可能出了什么问题。

我正在使用tcsh, 和-deleteswitch 与 find 效果不好。

这是快照锻炼完成

答案1

如果您使用-prune中建议的选项回答,错误消息不会出现。

引用上面的答案,

-prune在您要删除的目录上使用,告诉 find 不要费心尝试在其中查找文件。

测试

mkdir koko
cd koko
touch file{1,2}
cd ..
find . -type d -name "koko" -prune -exec rm -rf {} \;

执行上述find命令后,我得到提示,没有任何错误。但是,如果我不使用该-prune选项,我会收到与您提到的相同的错误。

答案2

问题是find找到了一个目录,它与您的选择相匹配,然后执行命令。然而,find想要做自然而然的事情,那就是通过目录树递归,但是它刚刚找到的目录已经消失了!因此出现错误消息。

您可以通过提供选项来解决此问题--depth,这意味着在目录本身之前处理每个目录的内容。手册页还提到该-delete选项也暗示了这个选项,就是出于上述原因。

相关内容