捕获以任何数字结尾的日志文件

时间:2018-08-29 11:00:20

标签: regex linux bash find

我们要捕获所有以“ .log。[任何数字]

结尾的日志

所以我创建了这种语法

find .  -type f  -regex '\.log\.*[0-9]$' -print

command does not give any output 

但这不会捕获以下文件(预期结果)

  controller.log.2018-01-03-01  
  server.log.2017-10-31-03
  server.log.2018-01-23-11
  server.log.2018-04-06-17  
  server.log.2018-07-07-05
  controller.log.2018-01-03-02  
  log-cleaner.log.10           
  server.log.2017-10-31-04 
  server.log.2018-01-23-12  
  server.log.2018-04-06-18 
  server.log.2018-07-07-06
  controller.log.2018-01-03-03 
  log-cleaner.log.2   
  server.log.232.434

我的语法出了什么问题?

2 个答案:

答案 0 :(得分:1)

摘自find联机帮助页:

  

-regex pattern

     

文件名与正则表达式模式匹配。这是整个路径上的匹配项,而不是搜索。例如,要匹配名为./fubar3的文件,可以使用正则表达式.*bar..*b.*3,但不能使用f.*r3。 find可以理解的正则表达式默认为Emacs正则表达式,但是可以使用-regextype选项更改。

因此,您必须匹配整个路径,在这种情况下,您可以尝试:

find .  -type f  -regex '.*\.log.*[0-9]$' -print

答案 1 :(得分:0)

能否请您尝试以下操作(考虑到您的文件格式与所示示例的格式相同)

find . -regextype posix-extended -regex ".*\.log.[0-9]{4}(-[0-9]{2}){3}"