首页 > 解决方案 > 捕获以任意数字结尾的日志文件

问题描述

我们想要捕获所有以“.log.[any number]”结尾的日志

所以我创建了这个语法

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

我的语法有什么问题?

标签: regexlinuxbashfind

解决方案


find手册页:

-regex pattern

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

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

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

推荐阅读