如果用户的主目录中没有任何文件,则失败

时间:2018-11-20 13:13:48

标签: shell find xargs

我在用户目录中查找文件并将其删除时遇到问题,但是当没有文件时,出现以下错误“无此文件或目录”。谁能建议我如何避免此错误?

[root@server1 ~]# find /home/*/* -name \* | xargs rm -rf 

找到:‘/ home / / ’:没有这样的文件或目录

2 个答案:

答案 0 :(得分:0)

不要那样做。 ext2可以包含文件名\0/以外的任何字符!考虑一下如果用户命名文件会发生什么情况

"hi etc"

在这里,rm -rf将收到etc作为第二个参数,因此,如果您的脚本在/中执行,则将删除/etc目录。有一些选项可以安全地处理带有空格的文件名,但是如果文件中包含换行符,则其中某些选项将失败-当然,这同样可能:

"hi
etc"

find可以选择删除文件(-delete),请尝试使用它。这也可以解决您的原始问题。如果那不可能,请阅读有关find -print0xargs -0的文档。

答案 1 :(得分:-1)

没有文件时,查找搜索将返回“没有这样的文件或目录”,因为没有文件时,您描述的目录结构不存在。然后将错误与“ xargs”一起传递给rm

find /home/ -name \* | xargs rm -rf 

应该在没有警告的情况下为您提供正在等待的结果,因为find不会尝试构建不存在的路径。