如何在linux中删除超过n天的文件和目录

时间:2015-09-22 06:42:49

标签: linux shell

我有一个名为repository的目录,它有许多文件和子目录。我想找到自过去14天以来未被修改的文件和目录,以便我可以删除这些文件和目录。 我写了这个脚本,但它只提供了目录名

#!/bin/sh

M2_REPO=/var/lib/jenkins/.m2/repository
echo $M2_REPO
OLDFILES=/var/lib/jenkins/.m2/repository/deleted_artifacts.txt
AGE=14 

find "${M2_REPO}" -name '*' -atime +${AGE} -exec dirname {} \; >> ${OLDFILES}

2 个答案:

答案 0 :(得分:1)

find /path/to/files* -mtime +5 -exec rm {} \;

请注意,rm,{}和\;

之间有空格

解释

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

第二个参数-mtime用于指定文件的旧天数。如果输入+5,则会找到超过5天的文件。

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

这应该适用于Ubuntu,Suse,Redhat或几乎任何版本的Linux。

答案 1 :(得分:0)

您可以使用find -delete标志来删除文件。只需注意将其放在命令的末尾,以便首先应用时间过滤器。

您可以先列出命令找到的文件:

find "${M2_REPO}" -depth -mtime +${AGE} -print

-d标志使find执行搜索深度优先,这是-delete命令隐含的。

如果您喜欢结果,请将打印更改为删除:

find "${M2_REPO}" -mtime +${AGE} -delete