2015-06-12 81 views
0

我必须定期在7天后删除多个文件。每个文件的删除日期和位置都不相同。是的,我可以分别为每个文件夹应用一个cronjob,但是tat会涉及许多cronjob(至少15个)。 为了避免这种情况,我想创建一个脚本,它将转到每个文件夹并删除数据。 例如:7天后删除文件

-rw-r--r-- 1 csbackup other 20223605295 Jun 12 06:40 IO.tgz 

正如你可以看到IO.tgz已于2015年12月6日6:40创建...现在我想在17/06/2015 00:00时删除该文件。 ..这是我无法使用mtime的原因之一,因为它将在7 * 24小时后完全删除。

我在想比较文件的时间戳,但是,我的机器上没有stat实用程序。现在它甚至允许我安装它。

任何人都可以请指导我通过一个脚本,我可以用它来删除n天之后

+2

使用cron,也许? – Arpith

+0

你认为一个没有运行的cron作业会占用多少资源?它占用crontab行本身使用的相同数量的磁盘空间(通常不超过80个字符)。运行时需要多少计算时间?字面上没有。 – msw

回答

0

可以让你想在一个文件中搜索目录的列表。

# cat file 
/data 
/d01 
/u01/files/ 

现在您可以使用for循环来逐个删除那些目录中的文件。

for dir in $(cat file); do 
    find $dir -type f -mtime 7 |xargs rm -f 
done 
+2

也许会更好:'find $(cat file)-type f -mtime 7 -delete' - 你不需要''循环和'xargs'和'rm' - 'find'会做所有事情:) – uzsolt

+0

但使用mtime 7 ..不会删除准确的7 * 24小时后文件被修改。因为示例中的文件在上午6点被修改..但是,我想在7天后的00:00小时(按日期)删除它 –

+0

我会建议用'-mtime + 7'来请求7天的文件*或更多*年龄... – twalberg