
この名前形式のログ ファイルがあると仮定します。
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
: 削除する