regex - 捕获以任意数字结尾的日志文件
问题描述
我们想要捕获所有以“.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
我的语法有什么问题?
解决方案
从find
手册页:
-regex pattern
文件名匹配正则表达式模式。这是整个路径上的匹配,而不是搜索。例如,要匹配名为 的文件
./fubar3
,您可以使用正则表达式.*bar.
or.*b.*3
,但不能使用f.*r3
. find 理解的正则表达式默认是 Emacs 正则表达式,但这可以通过 -regextype 选项进行更改。
因此,您必须匹配整个路径,在这种情况下,您可以尝试:
find . -type f -regex '.*\.log.*[0-9]$' -print
推荐阅读
- python-3.x - 使用python3在空间进行字符串分离
- javascript - 将分类处理为标签或层次结构?
- c++ - classname functionname(const classname & objectname) 是什么意思?
- r - 在 Debian GNU/Linux 9 的 VM 中安装 R 版本 3.5.2 的蛮力
- saxon - 流式传输 xml 到 json
- networking - 使用 packet_mmap 的以太网捕获比wireshark 获得更多的数据包
- php - Laravel Eloquent 过滤产品的属性
- python - 从缺少最后几列的 txt 文件行中读取 int 数组作为向量。由一些空格分隔的数据
- .net - Blazor .net 版本兼容性问题
- javascript - 更新 mongodb 集合中的字段,即使它不存在