2012-10-29 113 views
0

目錄中給定的日誌文件加蓋這樣的:日誌輪播和Shell腳本

 
log_from_2012_08_14-11:57:21_To_2012_09_14-11:56:12.zip 
log_from_2012_10_14-11:57:21_To_2012_11_14-11:56:12.zip 

的,而且是有這樣的關於155450的文件,在一個簡單的或有效的方法我怎麼能執行以下操作:

使用logrotate或其他工具爲每個月創建一個文件夾:例如,mkdir $ currentMont = october,並將每個月的所有2012年10月文件都放在那裏等等。

+0

這些日誌跨越2個月,你想讓它們按開始時間排序嗎? –

+0

嗯,這是一個例子,我的服務器有每個2小時的日誌:) – drd0sPy

回答

1

這聽起來像一個嵌套for循環夫婦bash腳本會做的伎倆。

類似:

for year in $(seq -f "%02g" 0 20); do 
    for month in $(seq -f "%02g" 0 12); do 
     dest = "20${year}-${month}" 
     mkdir "$dest" 
     mv "log_from_${dest}*" "${dest}"; 
    done; 
done; 

顯然你需要調整這個您的需求。如果一個目錄中的文件太多,則可能會遇到行限制,在這種情況下,您必須使用find . | xargs mv來避免該問題。

+0

是的,但是非常感謝你的幫助,我認爲全侷限制幾乎肯定會彈出我甚至可以在目錄中執行ls服務器剛剛停止...因爲ls的排序能力,我必須做一個ls -f來查看文件...想象一個for循環哈哈 – drd0sPy