查找命令没有这样的文件或目录错误

查找命令没有这样的文件或目录错误

我使用此命令删除超过 150 天的文件和文件夹

 find /media/Server/VPS/dailySQL/* -mtime +140 -exec rm -rf {} \;

问题是我收到如下错误

find: `/media/May-08-Sat-2010': No such file or directory
find: `/media/May-11-Tue-2010': No such file or directory
find: `/media/May-12-Wed-2010': No such file or directory
find: `/media/May-13-Thu-2010': No such file or directory
find: `/media/May-14-Fri-2010': No such file or directory

这是为什么

答案1

尝试这个:

$ find /media/Server/VPS/dailySQL/ -mtime +140 | xargs rm -rf

答案2

因为您要删除目录,然后尝试进入其中。添加-prune到末尾。

答案3

提出的几个建议存在一个问题,即如果任何文件/目录包含特殊字符,则不会删除它们。在提交者 lins 中执行 -exec 确实很耗时,通过将名称传送到 xargs 并尽可能少地调用 rm/rmdir 可以提高效率。

 touch /media/Server/VPS/dailySQL/.saver     
 find /media/Server/VPS/dailySQL -type f -mtime +140 -print0 | xargs -0 rm -f >/dev/null 2>&1
 find /media/Server/VPS/dailySQL -depth -type d -print0 | xargs -0 rmdir >/dev/null 2>&1

第二行删除所有旧文件。我在第一行将文件放在顶层目录中,以防止它被破坏,最后您深度优先地遍历目录并尝试 rmdir。如果仍有某些内容存在,则 rmdir 将失败。在尝试删除给定目录之前,深度优先是删除空子目录的必要条件。

最后,请注意 xargs 上的 -print0 和 -0 参数。这允许您正确处理包含空格或其他元字符的文件。我最近接触的大多数 Linux 系统都提供此功能。

这是我用来删除 /tmp 和 /var/tmp 项目的脚本类型。

享受

相关内容