2012-03-05 26 views
1

命令我每天要創建其中寫入日誌文件的應用程序,我想知道什麼應該每一天,所以如果是文件名所有位於同一文件夾中的文件將按照降序排列(從最新到最舊)?什麼應與日期名的文件的文件名,因此會被遞減

+0

爲什麼擔心文件命名?幾乎所有現存的shell都有能力按文件元數據進行排序,其中包括創建時間。例如'LS -t'或'DIR/od' – 2012-03-05 18:57:17

+0

最有可能使生活更輕鬆,因爲我不知道有多少文件將如何被創建,我總是希望最後一個是在列表的頂部。 – Popokoko 2012-03-05 19:04:02

+0

然後文件排序選項是最可靠的,因爲您不依賴於排序的文件名。 – 2012-03-05 19:05:52

回答

0

我會建議使用以下格式:「YYYY-MM-dd_hh_mm_ss」和名字,你的文件文件夾中的降序排序。

+0

...如果可以有你的應用程序的多個實例,附加PID(進程ID)日誌文件名 – 2012-03-05 18:58:40

+0

這不是因爲YYYY-MM-DD完全正確......將導致該第一個文件可以2012-03 -01,第二個文件將是2012-04-01,在這種情況下,04應該是自4月份以來最早的第一個文件。 – Popokoko 2012-03-05 19:02:55

+0

這就是爲什麼我提到按名稱降序排序文件夾中的文件的原因。我假設他無論以何種方式查看他的文件,都可以使用該功能。 – Khan 2012-03-05 19:23:53

0

您可能會在將來的日期。減去,從2033例如:

echo $((2000*1000*1000 - $(date +%s))) 
669025348 

乘法比2000000000當前日期爲s更好的可讀性是:

date +%s 
1330974665 

所以從現在開始,這將是一個穩定的方法。

更好的可讀的方式是,否定的數字日期的每一部分:

echo > $(date +-%Y.-%m.-%d.-%H.-%M.-%S) 

ls 
-2012.-03.-05.-20.-46.-07 -2012.-03.-05.-20.-46.-16 -2012.-03.-05.-20.-46.-24 
ls | sort -n 
-2012.-03.-05.-20.-46.-07 
-2012.-03.-05.-20.-46.-16 
-2012.-03.-05.-20.-46.-24 

它看起來古玩,是不是很好處理的,因爲你將不得不使用

rm -- * 

刪除所有這些文件,因爲

rm * 

會導致錯誤解釋 - 符號。但是你可以檢測到真實的日期。

+0

謝謝你的答案,但我真的不知道如何輸出相關日期..也許我想要實現的是不是真的可能? – Popokoko 2012-03-05 19:22:41

+0

要查看文件起源的日期,您需要執行'ls -l'。你還認爲在可讀日期中應該有可能進行向後排序嗎?另一個想法是在每個日期部分前放一個「 - 」。我把它寫入答案。 – 2012-03-05 19:44:41

相關問題