2017-09-26 13 views
0

私のbashスクリプトでは、x日間だけログを保存し、古いものを削除したいと考えています。ログファイル名自体に作成日が含まれています。linuxのx日より古いログを削除する

ログ形式:

tps-20170917145225514-12423.tps (17st Sept 2017) 
tps-20170921134300641-2563.tps (21st Sept 2017) 

私の考えは、すべてのログをソートし、最新のログファイルのための時間を抽出し、それからX日に

date -d "10 days" 
のようなものを減算することにより、最も早い時間を評価することです

次に、評価された最も早い時刻より前にすべてのログを削除します。

これらのログは異なるサブディレクトリに格納されており、すべての場所から削除する必要があります。

私が正しいアプローチを使用している場合や、この問題のより良いアプローチがある場合は助けてください。

おかげ Ankit

+1

あなただけの代わりのlogrotateを使用することはできますか?それはこれのために建てられました。 –

+0

これらのログは異なる場所からコピーされていますが、私たちはlogrotateを使用できるとは思っていません。 –

答えて

0

別のアプローチは、例えば、N日より古いログファイルを削除することです。:

find <dir> -type f ! -newermt '10 days ago' -exec rm {} + 
+0

私は2つの理由でシステム日付を使用できません。 a)ログは異なる場所からコピーされるため、タイムスタンプは変更され、管理はできません。 b)ログは1歳と言うこともあり、最新のx日が必要です。 –

関連する問題