删除超过 1 天的文件或目录时出错

删除超过 1 天的文件或目录时出错

我可以使用以下命令删除超过 1 天的文件或目录

find /u01/Release/* -mtime +1 -exec rm -r {} \;

但为什么我在此命令的输出中收到错误:

ls -lrt 
drwxr-xr-x 3 tomcat8 tomcat8      60 Oct  4 07:11 build_180
drwxrwxr-x 6 root    root        309 Sep 21  2017 redis-3.2.11
-rw-r--r-- 1 root    root    1550452 Oct  4 15:23 redis-3.2.11.tar.gz

find: ‘/u01/Release/redis-3.2.11’: No such file or directory

执行命令后

ls -lrt 
drwxr-xr-x 3 tomcat8 tomcat8      60 Oct  4 07:11 build_180
-rw-r--r-- 1 root    root    1550452 Oct  4 15:23 redis-3.2.11.tar.gz

答案1

这是众所周知的问题。问题是find首先删除目录,然后尝试处理其中的文件。解决方案是首先处理目录内的内容,然后再删除目录。这就是-depth选项的用途,所以:

find /u01/Release/* -depth -mtime +1 -exec rm -r {} \;

应该可以解决问题。您可能还对使用操作的较短形式感兴趣-delete(这意味着-depth):

find /u01/Release/* -mtime +1 -delete

一如既往man find是你的朋友。

答案2

尝试下面的方法,最好使用--force它来删除文件和目录。

find /u01/Release/* -mtime +1 -exec rm -rf {} \;


-r, -R, --recursive
              remove directories and their contents recursively
-f, --force
                  ignore nonexistent files, never prompt

相关内容