我想删除超过 7 天的文件和文件夹,所以我尝试了
[17:07:14 [email protected]:~]# find /tmp/ -mindepth 1 -maxdepth 1 -ctime +7 -exec ls -l {} \;
因此,当我运行
find /tmp/ -mindepth 1 -maxdepth 1 -ctime +7 -exec ls -l {} \;
时,它不会显示任何目录,但对于 find /tmp/ -mindepth 1 -maxdepth 2 -ctime +7 -exec ls -l {} \;
,它确实在子目录中显示了几个文件。
删除某个特定目录中超过 7 天的文件/文件夹的正确方法是什么?
你可以利用这段代码
find /tmp/* -mtime +7 -exec rm {} \;
解释
第一个参数是文件的路径。这可以是路径、目录或通配符,如上例所示。我建议使用完整路径,并确保在不使用 exec rm 的情况下运行命令,以确保获得正确的结果。
第二个参数
-mtime
用于指定文件存在的天数。如果输入 +7
,它将查找超过 7 天的文件。
第三个参数
-exec
,允许您传入命令,例如 rm。需要末尾的 {} \;
来结束命令。
来源:http://www.howtogeek.com/howto/ubuntu/delete-files-older-than-x-days-on-linux/
要删除文件夹,清空其中的内部后,您可以在代码段中
rmdir
代替rm
,如果您只想查看目录,则可以添加
-type d
如下所示的一段代码:
find /tmp/*/* -mtime +7 -type d -exec rmdir {} \;
更容易做
find /tmp/* -mtime +7 -exec rm -rf {} \;
这将删除文件和目录
find /tmp/* -mtime +7 -type f -exec rm {} \;
删除文件。
find /tmp/ -empty -type d -delete
删除空目录。
我推荐这个oneliner在8天内删除所有旧文件:
find /tmp/ -mtime +8 -type f -exec rm {} \; -o \
-mtime +8 -type d -empty -exec rmdir {} \;
-o
分割文件和目录,这样我们就不会删除目录然后因为文件不存在而出现错误。它还会删除包含新文件的目录中的旧文件。
这可能会导致空目录在删除文件更新目录后多停留 8 天。
在此处添加替代方案仅供将来参考
-
表示240天(约8个月)mtime +240
rm $(find folder/* -type f -mtime +240)
删除超过 8 个月的文件夹
rm $(find folder/* -type d -mtime +240)