2012-07-30 31 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命令。