删除超过365天的文件

时间:2016-01-27 12:35:45

标签: bash

文件命名为name_2016-01-19_00-00-00 ...

尝试了find /path/to/files* -mtime +5 -exec rm {} \;之类的脚本,但遗憾的是文件已从Linux移到Windows等等,因此文件日期不再准确。

1 个答案:

答案 0 :(得分:2)

以下将打印所有文件中没有日期的文件,或者日期早于您在"dummy_2015_01_27"名称中放置的日期。一旦你有了名单,那么删除它们是微不足道的。

它假定文件名的name部分永远不会有下划线(即_上的日期是字段2)。如果那不是真的,那么你将不得不考虑别的事情。

(echo "dummy_2015_01_27"; find /path/to/files -type f) \
    | sort --field-separator='_' --key 2 \
    | sed '/^dummy_/,$d'

这适用于GNU sed(我有v4.2.2),这是Linux上的最爱,但可能不会与其他sed实现一起工作。同样,我只用GNU sort(v8.24)进行了测试。