2012-07-30 94 views
0

任何想法如何删除我的旧文件之间的月份,直到哪个月,这是使用Linux命令?如何删除旧月之间的月份?

例如我想要做的是:

rm oldfile.txt april until may 2012 

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

感谢

+0

“linux编码”如在bash中? – 2012-07-30 01:35:24

+0

我用putty来访问服务器,实际上是linux命令 – Oscar 2012-07-30 01:52:24

+0

提示:'man find'。 – jweyrich 2012-07-30 01:58:43

回答

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 {} \; 

编辑:请注意,这将删除四月和五月之间的文件。因此2012年4月1日至2012年4月30日之间的文件将被删除。另外,在实际删除文件之前查看要删除的文件列表是个不错的主意。为此,请将rm更改为ls -la

+0

谢谢,它工作得很好 – Oscar 2012-07-30 04:01:54

0

AWK可以帮助您在日期显示文件,也是他们的最后修改时间删除单月的文件(或一组个月)

ls -l | awk '{if ($6=="Apr" || $6=="Mai") print $9}' | xargs rm 
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年则可之间的文件你要只提取文件名(第四场起)使用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命令。