特定の日付パターンのファイルを削除する方法

特定の日付パターンのファイルを削除する方法

フォルダの下に/var/log/roler_t次のファイルがあります。

-rw-r--r-- 1 roler smike    37652 Jun 25 01:44 2018-06-23T02:KJU:00
-rw-r--r-- 1 roler smike    41742 Jun 25 01:45 2018-06-21T20:KJU:00
-rw-r--r-- 1 roler smike    36762 Jun 25 01:46 2018-06-22T08:KJU:00
-rw-r--r-- 1 roler smike    51764 Jun 25 01:47 PL-06-23T12:KJU:00
-rw-r--r-- 1 roler smike    42751 Jun 25 01:48 2018-06-21T16:KJU:00
-rw-r--r-- 1 roler smike    34627 Jun 25 01:49 2018-06-22T23:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 2018-06-23T05:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 2018-06-22T20:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 JFG:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 PL-22T20:KJU:00
-rw-r--r-- 1 roler smike    36643 Jun 25 01:53 2018-06-22T01:KJU:00

10日以上の特定の日付パターン(例えば2018-06-23

予想される結果は次のとおりです。

次のファイルは次に保存されます。/var/log/roler_t

-rw-r--r-- 1 roler smike    51764 Jun 25 01:47 PL-06-23T12:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 JFG:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 PL-22T20:KJU:00

答え1

このコマンドを使用して、日付でファイルをフィルタリングできますfind

たとえば、

find /var/log/roler_t -mtime +10

すべてのファイルを返す修正日> 10日。

-atime繰り返しますが、(アクセス時間)、(状態変更時間)などを使用できます。 flags しかし、それはまさにあなたが探しているものだと-ctime思います。-mtime

コマンド一つで削除したい場合(しかしお勧めします)いつも結果がfind予想と一致することを事前に確認してください。)

find /var/log/roler_t -mtime +10 -exec rm {} \;

答え2

これは前の質問と似ています。以下から入手できます。

$ find /var/log/roler_t -mtime +10 -name "XXXX-XX-XX*"

XXXX-XX-XXは探している日付スタンプです。もしあなたなら知る年、月、日は、探している修正時刻に対応します。 -nameオプションのパラメーターを次のように変更できます。

$find /var/log/roler_t -mtime +10 -name "`date -d'now - 10 days' +'%y-%m-%d'*"

mtime と date スタンプが必要なものと一致することを確認するには、date コマンドを使用して日数を減らす必要がありますが、ファイル名のプレフィックスは自動的に生成されます。

「2018-09-13」など、日付スタンプに似た文字列で始まるファイル名のみを一致させるには、次のコマンドを使用します。

/var/log/roler_t -mtime +10 -name "[12][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]*"

関連情報