2016-01-08 27 views
-5

如何根據當前日期刪除5天以前的文件。如何僅使用正則表達式刪除超過5天的文件

我的文件名是這樣的:

2016-01-01 Normal.csv 
2016-01-02 Normal.csv 
2016-01-03 Normal.csv 
2016-01-04 Normal.csv 
2016-01-05 Normal.csv 
2016-01-06 Normal.csv 
2016-01-07 Normal.csv 

每天都在進入該文件夾一個新的文件。我想刪除5天以前的文件。

+0

使用內置日期函數比較日期。而不是使用文件名中的日期,請在比較後使用文件屬性來獲取創建日期和刪除日期。 **不要使用正則表達式** – Tushar

+0

您可能最終會得到像(day1 | day2 | day3 | day4 | day5)這樣的正則表達式,這似乎很愚蠢。爲什麼不使用文件創建或修改時間對你來說更合理? –

+0

請給我答案。請不要給建議。 –

回答

1

sh中的示例 - 隨意將該方法翻譯爲「pentaho數據集成」使用的任何語言。

#!/bin/sh 
keep="" 
pre="(" 
for past in 0 1 2 3 4 5 ; do 
     one=`date -d-${past}days +%Y-%m-%d` 
     keep="${keep}${pre}${one}" 
     pre="|" 
done 
keep="${keep}) Normal.csv" 
echo $keep 

$ ./dsh.sh 
(2016-01-08|2016-01-07|2016-01-06|2016-01-05|2016-01-04|2016-01-03) Normal.csv 

我不清楚你是否想保留過去5天的日子;如果你不這樣做,改變應該足夠明顯。

+0

從[評論](http://stackoverflow.com/questions/34670698/how-to-delete-files-older-than-5-days-using-only-regular-expression#comment57087145_34670698)_我想執行那個定期在pentaho數據集成中的表達._。不知道「pentaho」是什麼。如果這是使用Linux/Unix命令完成的,那麼爲什麼不使用[this comment]中的任何一個命令(http://stackoverflow.com/questions/34670698/how-to-delete-files-older-than-5只使用正則表達式#comment57087080_34670698) – Tushar

+0

我也不知道'pentaho'是什麼,我只是展示了「算法」。如果你可以調用「從今天減去天數」的算法,也就是說。 –