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

我正在使用此命令删除超过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 

这是为什么

尝试这个:

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

因为你正在删除目录,然后试图下降到他们。 添加-prune到最后。

提出的几个build议的问题是,如果任何文件/目录具有特殊字符,则不会被删除。 在提交者列表中执行-exec实际上是时间上的消耗,通过将名称传递给xargs并尽可能less地调用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参数。 这使您可以正确处理其中包含空格或其他元字符的文件。 这个function在我最近接触到的大多数Linux系统上都可用。

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

请享用