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