X 日以上経過し、数字で終わるすべてのファイルを削除する方法

X 日以上経過し、数字で終わるすべてのファイルを削除する方法

2桁または3桁以上の数字で終わるすべてのファイルを削除したい

注意 - ファイルが数字で終わる場合、このファイルはローテーションされ、実際には一意の数字でバックアップされたことを示しています。

-rw-r--r--  1 kafka hadoop    73668 Aug  5 07:56 controller.log.2018-08-05-07
-rw-r--r--  1 kafka hadoop    73668 Aug  5 08:56 controller.log.2018-08-05-08
-rw-r--r--  1 kafka hadoop   658893 Aug  7 11:53 controller.log.3
-rw-r--r--  1 kafka hadoop     1092 Aug  7 14:35 controller.log.2
-rw-r--r--  1 kafka hadoop  2750003 Aug  7 14:52 state-change.log.2018-08-07-14
-rw-r--r--  1 kafka hadoop     3678 Aug  7 14:52 log-cleaner.log.2018-08-07-14
-rw-r--r--  1 kafka hadoop   199094 Aug  7 14:52 controller.log.2018-08-07-14
-rw-r--r--. 1 kafka hadoop    24431 Aug  7 15:07 kafka.err
-rw-r--r--  1 kafka hadoop     1147 Aug  7 16:02 server.log.10
-rw-r--r--  1 kafka hadoop     1061 Aug  7 16:02 server.log.9
-rw-r--r--  1 kafka hadoop   135465 Aug  7 16:07 server.log.8
-rw-r--r--  1 kafka hadoop    10278 Aug  7 16:07 server.log.7
-rw-r--r--  1 kafka hadoop    10350 Aug  7 16:07 server.log.6
-rw-r--r--  1 kafka hadoop    10353 Aug  7 16:07 server.log.5
-rw-r--r--  1 kafka hadoop    10322 Aug  7 16:07 server.log.4
-rw-r--r--  1 kafka hadoop     1272 Aug  7 16:07 log-cleaner.log
-rw-r--r--  1 kafka hadoop   473322 Aug  7 16:07 controller.log.1
-rw-r--r--  1 kafka hadoop      170 Aug  7 16:07 controller.log

予想された結果:

-rw-r--r--. 1 kafka hadoop    24431 Aug  7 15:07 kafka.err
-rw-r--r--  1 kafka hadoop     1272 Aug  7 16:07 log-cleaner.log
-rw-r--r--  1 kafka hadoop      170 Aug  7 16:07 controller.log

このオプションを試してみましたが、このオプションは機能しません

 find . -type f  -mtime +6   -name '*[0-9]'  -print -delete

正しい構文を構築するのを手伝ってください。

答え1

-regexのパラメータを使用する必要がありますfind

find . -type f  -mtime +6 -regex '^.*[0-9]$' -print -delete

これにより、数字で終わるすべてのファイルが一致して削除されます (一部の拡張子も数字で終わる場合があることに注意してください。たとえば.mp4、 )。

また、 は-mtime浮動小数点数をサポートしておらず、常に次の日付に切り上げられることに注意してください。したがって、少なくとも 6 日前に変更されたファイルを削除する場合は、 を指定します-mtime +5

答え2

正しい構文を構築するのを手伝ってください。

使用したもの:

find . -type f  -mtime +6   -name '*[0-9]'  -print -delete

正しい構文ですが、いくつか注意点があります。

  1. -deleteは移植性がありません。一般的に、の実装ではfindこれをサポートする場合とサポートしない場合があります。移植性のある同等のものは-exec rm {} \;

  2. -nameglobのようなパターンを使用します。ロケールによっては[0-9]あるいはそうではないかもしれないまさにあなたが望む意味です。ASCIIの10進数以外の文字セットに一致する可能性があります(例えば、

関連情報