我在用户目录中查找文件并将其删除时遇到问题,但是当没有文件时,出现以下错误“无此文件或目录”。谁能建议我如何避免此错误?
[root@server1 ~]# find /home/*/* -name \* | xargs rm -rf
找到:‘/ home / / ’:没有这样的文件或目录
答案 0 :(得分:0)
不要那样做。 ext2可以包含文件名\0
和/
以外的任何字符!考虑一下如果用户命名文件会发生什么情况
"hi etc"
在这里,rm -rf
将收到etc
作为第二个参数,因此,如果您的脚本在/
中执行,则将删除/etc
目录。有一些选项可以安全地处理带有空格的文件名,但是如果文件中包含换行符,则其中某些选项将失败-当然,这同样可能:
"hi
etc"
find
可以选择删除文件(-delete
),请尝试使用它。这也可以解决您的原始问题。如果那不可能,请阅读有关find -print0
和xargs -0
的文档。
答案 1 :(得分:-1)
没有文件时,查找搜索将返回“没有这样的文件或目录”,因为没有文件时,您描述的目录结构不存在。然后将错误与“ xargs”一起传递给rm
。
find /home/ -name \* | xargs rm -rf
应该在没有警告的情况下为您提供正在等待的结果,因为find不会尝试构建不存在的路径。