我们要捕获所有以“ .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
我的语法出了什么问题?
答案 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}"