ファイル名でファイルログを削除する方法

ファイル名でファイルログを削除する方法

この名前形式のログ ファイルがあると仮定します。

NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30
NameLog.log.2014-10-01
NameLog.log.2014-10-02
NameLog.log.2014-10-03
NameLog.log.2014-10-04

ログファイルのみを削除したい

NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30

実際には、ファイル ログに 30 ファイルだけ保存したいのですが、bashスクリプトでこれを解決するにはどうすればよいですか?

答え1

目的を達成する最も簡単な方法は、ディレクトリ内の 30 日以上経過したファイルをすべて削除することです。次のfindコマンドを使用できます。

find /path/to/log/ -maxdepth 1 -name "NameLog.log*" -mtime +30 -delete

説明:(見る:説明シェル

  • -maxdepth 1: フォルダ構造を深く調べない
  • -name "NameLog.log*": その名前のログファイルにのみ適用されます
  • -mtime +30: 変更日時が30日以上前のもの
  • -delete: 削除する

関連情報