删除超过3年的文件

时间:2015-02-16 04:40:11

标签: linux bash delete-file

我需要删除目录中超过2年的任何文件。保留最新文件并删除旧文件非常重要。

我搜索过并找到了这个。

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

我可以将数字乘以吗?

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

有没有办法添加一个开关,将文件名打印到屏幕上删除它?确保它正在做我期待的事情?

我也发现了这个:

find /rec -mtime +365 -print0 | xargs -0 rm -f

两者之间是否存在重大差异?这个比那个好吗?我读过的内容表明xargs更快。我可以将mtime数量乘以第二年或第三年吗?

最后,我能将代码放入可以每天运行的cron作业中吗?

谢谢!

3 个答案:

答案 0 :(得分:7)

  

我可以将数字乘以吗?

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

是。回到"回声"在删除之前

find /path/to/files -mtime +1095 -print

然后使用-exec rm {} \;的版本删除文件(当您准备好时)。

答案 1 :(得分:1)

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

这应该可以正常工作,你可以通过简单地列出命令找到的文件来运行这个:

find /path/to/files* -mtime +1095 -exec ls {} \;

为了安全起见虽然我还会添加一个-type以确保其他内容不被删除:

find /path/to/files* -type f -mtime +1095 -exec rm {} \;

答案 2 :(得分:1)

回答你问题的第二部分。

是的,使用-exec或xargs有很大的不同。 -exec为找到的每个文件启动rm的新进程。这会产生大量开销,如果删除大量文件,可能会严重降低系统速度。

xargs根据需要创建尽可能多的rm进程,因为它创建了一个包含尽可能多的文件的命令行。因此,只创建了几个rm进程。

但两者都优于-delete,因为删除是未保存的