2015-04-28 69 views
-3

我有一個服務器,它在日誌目錄中創建了幾個日誌文件。由於這種日誌記錄機制,它在我的服務器上佔用了很多磁盤空間。我想編寫一個腳本,刪除所有超過一天的文件並保留最新的文件。刪除超過一天的文件

我可以使用ls -trl命令以排序的形式列出目錄。但我無法理解如何刪除這些文件。請幫忙。

+3

使用['find(1)'](http://linux.die.net/man/1/find),注意不要在腳下自己拍攝。 – unwind

回答

3

您可以使用下面的命令:

/usr/bin/find <Your Log Directory> -mtime +1 | xargs rm -f 

mtime - 提供文件的修改時間。

+1 - 表示超過一天。

+0

如果您打算使用管道,請確保您使用-print0和xargs -0,否則您的名稱中將會出現空白文件的問題 – cbz

+0

我會勸阻使用'find | xargs rm -f'。 'find'有一個'-delete'選項。 – anishsane

1

嘗試使用RM和find命令,如:

find . -mmin +$((60*24)) -exec rm {} \; 
0

find . -mtime +1 -exec rm {} \;

+0

雖然代碼是讚賞,它應該總是有一個附帶的解釋。這不需要很長時間,但它是預期的。 – peterh

+0

我同意這一點。我只是留下了我的答案,因爲與我同時發佈的其他答案實際上是相同的,並進行了解釋。沒有看到編輯我的觀點。 –

1

你不想ls,你想find

它有一個整潔的參數-mtime,它將結果限制爲特定的時間增量,而-exec允許您提供命令來運行結果。

因此,例如,

find -mtime +10 -name "*tmp*" -exec rm {} \; 

是否上的所有文件rm年齡超過10天,在名稱中tmp

噢,小心點。

非常小心。

相關問題