日付形式のファイルを検索+削除

日付形式のファイルを検索+削除

私たちは次のログを持っています

/var/log/sync/manager.log.2018-06-14-00
/var/log/sync/manager.log.2020-01-14-07
/var/log/sync/manager.log.2020-01-14-02
/var/log/sync/manager.log.2020-01-14-03
/var/log/sync/manager.log.2020-01-14-04
/var/log/sync/manager.log.2020-01-14-34
/var/log/sync/manager.log.2020-01-10-06
/var/log/sync/manager.log.2020-01-14-04
/var/log/sync/manager.log.2019-04-14-05
/var/log/sync/manager.log.2020-01-14-06
/var/log/sync/manager.log.2020-01-14-76
/var/log/sync/manager.log.2020-01-14-982

次の日付形式のログを削除したいと思います。2020-01-14-06

私は以下を作成しました

find  var/log/sync/  -type f -mmin +60  -regex '.*\.log.*[0-9]$' -delete

ただし、「.log」の後のすべての終了番号を削除します。

答え1

d='[0123456789]'
LC_ALL=C find /var/log/sync -name "*.log.$d$d$d$d-$d$d-$d$d-$d$d" \
  -type f -mmin +59 -delete

-mminおよび-deleteは非標準拡張です。)

GNUの場合は、60分より古いファイルを削除する(または)findです。-mmin +59\( -mmin 60 -o -mmin +60 \)

答え2

私はあなたの正規表現があまり良くないと思います。ログの後ろにあります.*\。これは、ログの後ろのすべてが正常で、最後に数字があることを意味します。それが必要です:

find var/log/sync/ -type f -mmin +60 -regextype sed -regex '.*\.log\.[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2,3\}$' -delete

-regextype sed少なくともマイコンピュータでは、量子化器を有効にする必要があります\{2\}

関連情報