如何删除所有超过 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不支持浮点数,并且始终四舍五入到第二天。因此,如果您想删除至少六天前修改过的文件,请提供-mtime +5

答案2

请帮助我建立正确的语法。

你使用了什么:

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

正确的语法,但有几点需要注意:

  1. -delete不可移植。一般来说,的实现find可能支持也可能不支持。可移植的等价物是-exec rm {} \;

  2. -name使用类似 glob 的模式。根据您所在的地区,[0-9]可能或者可能不会意思是你想要的:它可能匹配不同于 ASCII 十进制数字的一组字符(例如,它可能匹配

相关内容