查找和删除超过x天的文件或文件夹

roy*_*roy 11 linux shell automation

我想删除超过7天的文件和文件夹,所以我尝试了

[17:07:14 root@client01.abc.com:~]# find /tmp/ -mindepth 1 -maxdepth 1 -ctime +7 -exec ls -l {} \;
Run Code Online (Sandbox Code Playgroud)

因此,当我运行find /tmp/ -mindepth 1 -maxdepth 1 -ctime +7 -exec ls -l {} \;它不显示任何目录,但因为find /tmp/ -mindepth 1 -maxdepth 2 -ctime +7 -exec ls -l {} \;它确实显示在subdir中的几个文件.

什么是在一个特定目录中删除超过7天的文件/文件夹的正确方法?

Tol*_*rol 24

您可以使用这段代码

find /tmp/* -mtime +7 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

说明

第一个参数是文件的路径.这可以是路径,目录或通配符,如上例所示.我建议使用完整路径,并确保在没有exec rm的情况下运行命令以确保获得正确的结果.

第二个参数-mtime用于指定文件的旧天数.如果输入+7,它将找到超过7天的文件.

第三个参数-exec允许您传入诸如rm之类的命令.{} \; 最后需要结束命令.

资料来源:http://www.howtogeek.com/howto/ubuntu/delete-files-older-than-x-days-on-linux/

对于删除文件夹,它们的内部排空后,你可以rmdirinstad的rm在一段代码,如果你还只是想看看你可以添加目录

type -d 
Run Code Online (Sandbox Code Playgroud)

到下面的代码片段:

find /tmp/*/* -mtime +7 -type d -exec rmdir {} \;
Run Code Online (Sandbox Code Playgroud)

  • 我要说。Find 是我运行过的最可怕、最危险的命令。操作顺序错位,执行字符串中缺少引号,简单的逻辑错误?您最终可能会删除或修改大量您意想不到的项目。如果您先在没有 -exec 的情况下运行它也无济于事,因为未引用的项目不会传递给命令。我强烈建议通过'-exec ls {} \;'运行它 首先要确保您不会因为空格或其他字符而导致奇怪的分隔,导致您的 * 定位到您没想到的一大堆东西。 (5认同)

小智 7

更容易做到

find /tmp/* -mtime +7 -exec rm -rf {} \; 
Run Code Online (Sandbox Code Playgroud)

哪个将del文件和目录


alf*_*ang 5

我的简单方法:

find /tmp/* -daystart -mtime +7 -delete
Run Code Online (Sandbox Code Playgroud)

daystart选项从今天开始而不是从 24 小时前开始测量时间

参考:official_doc


sj5*_*j59 5

find /tmp/* -mtime +7 -type f -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

删除文件。

find /tmp/ -empty -type d -delete
Run Code Online (Sandbox Code Playgroud)

删除空目录。