我使用此命令删除超过 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 项目的脚本类型。
享受