如何删除哪个月到哪个月之间的旧文件?

时间:2012-07-30 01:31:02

标签: linux

任何想法如何删除我的旧文件到哪个月到哪个月,哪个是使用linux命令?

示例我想要做的是:

rm oldfile.txt april until may 2012

知道如何解决我的问题吗?

感谢

3 个答案:

答案 0 :(得分:0)

awk可以帮助您删除一个月(或一组几个月)的文件

ls -l | awk '{if ($6=="Apr" || $6=="Mai") print $9}' | xargs rm 

答案 1 :(得分:0)

您可以从使用stat轻松识别的日期开始显示文件及其上次修改时间:

$ stat -c '%n %z' foo bar
2012-02-25 23:39:31.000000000 +0000 foo
2012-02-25 23:43:35.000000000 +0000 bar

将此与grep相结合,您可以将列表过滤到您想要的月份:

$ stat -c '%n %z' foo bar | grep -E '^2012-0[45]-.. '

哪个应该为您提供在2012年4月到5月期间修改过的文件。然后您将只想使用cut提取文件名(第四个字段以进行删除):

$ stat -c '%n %z' foo bar | grep -E '^2012-0[45]-.. ' | cut -f 4- -d' '

一旦你对输出感到满意,那么就这样删除它们(这是不归路的,所以把你的安全带放在上面:):

$ !! | while read filename; do rm -f "$filename"; done

注意:!!符号重复最后一个命令,因此您不必再次键入它。在这种情况下,它将重复stat命令,最后切割结束。

答案 2 :(得分:0)

使用find

的三步流程
touch -d '2012-04-01 00:00:00' STARTING
touch -d '2012-04-30 23:59:59' STOPPING

find . -type f -newer STARTING -not -newer STOPPING -exec rm {} \;

编辑:请注意,这将在4月到5月之间删除文件。因此,2012年4月1日至2012年4月30日期间的文件将被删除。此外,最好在实际删除之前查看要删除的文件列表。为此,请将rm更改为ls -la