2016-01-27 57 views
-1

舊的文件刪除文件被命名爲喜歡name_2016-01-19_00-00-00 ...超過365天

試圖腳本像find /path/to/files* -mtime +5 -exec rm {} \;但遺憾的是這些文件是從Linux的移動到Windows等等這樣的文件日期不再準確。

+0

據我所知,沒有準確的時間戳。文件名需要解析,對吧? –

+0

事實上,創建/修改的時間戳並不準確。 – Silithus

回答

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排序(v8.24)進行測試。

+0

好的解決方案,我希望你的'sed' cmd能夠回到Sun 3(90年代)。祝你們好運。 – shellter

+0

@shelter手冊頁建議逗號運算符是一個GNU擴展。可能是一個普通的擴展。 – ams