regex - find -regex 不适用于 {} 说明符

标签 regex linux find

我正在尝试运行以下命令:

find /var/log/sa/ -regex ".*/sa[0\-3]\{2\}"

但是,这不会返回任何结果。我可以在 /var/log/sa/ 中看到文件存在,sa##sar## 两种格式——我只想匹配前者。

ll /var/log/sa/
total 40992
-rw-r--r-- 1 root root 719892 Dec  1 23:50 sa01
-rw-r--r-- 1 root root 719892 Dec  2 23:50 sa02
-rw-r--r-- 1 root root 719892 Dec  3 23:50 sa03
-rw-r--r-- 1 root root 719892 Dec  4 23:50 sa04
-rw-r--r-- 1 root root 719892 Dec  5 23:50 sa05
-rw-r--r-- 1 root root 719892 Dec  6 23:50 sa06
-rw-r--r-- 1 root root 719892 Dec  7 23:50 sa07
-rw-r--r-- 1 root root 719892 Dec  8 23:50 sa08
-rw-r--r-- 1 root root 719892 Dec  9 23:50 sa09
-rw-r--r-- 1 root root 719892 Dec 10 23:50 sa10
-rw-r--r-- 1 root root 719892 Dec 11 23:50 sa11
-rw-r--r-- 1 root root 719892 Dec 12 23:50 sa12
-rw-r--r-- 1 root root 719892 Dec 13 23:50 sa13
-rw-r--r-- 1 root root 719940 Dec 14 23:50 sa14
-rw-r--r-- 1 root root 719892 Dec 15 23:50 sa15
-rw-r--r-- 1 root root 719892 Dec 16 23:50 sa16
-rw-r--r-- 1 root root 719892 Dec 17 23:50 sa17
-rw-r--r-- 1 root root 719892 Dec 18 23:50 sa18
-rw-r--r-- 1 root root 719892 Dec 19 23:50 sa19
-rw-r--r-- 1 root root 719892 Dec 20 23:50 sa20
-rw-r--r-- 1 root root 719892 Dec 21 23:50 sa21
-rw-r--r-- 1 root root 719892 Dec 22 23:50 sa22
-rw-r--r-- 1 root root 669932 Dec 23 22:10 sa23
-rw-r--r-- 1 root root 719892 Nov 24 23:50 sa24
-rw-r--r-- 1 root root 719892 Nov 25 23:50 sa25
-rw-r--r-- 1 root root 719892 Nov 26 23:50 sa26
-rw-r--r-- 1 root root 719892 Nov 27 23:50 sa27
-rw-r--r-- 1 root root 719892 Nov 28 23:50 sa28
-rw-r--r-- 1 root root 719892 Nov 29 23:50 sa29
-rw-r--r-- 1 root root 719892 Nov 30 23:50 sa30
-rw-r--r-- 1 root root 673355 Dec  1 23:53 sar01
-rw-r--r-- 1 root root 673355 Dec  2 23:53 sar02
-rw-r--r-- 1 root root 673355 Dec  3 23:53 sar03
-rw-r--r-- 1 root root 673355 Dec  4 23:53 sar04
-rw-r--r-- 1 root root 673355 Dec  5 23:53 sar05
-rw-r--r-- 1 root root 673355 Dec  6 23:53 sar06
-rw-r--r-- 1 root root 673355 Dec  7 23:53 sar07
-rw-r--r-- 1 root root 673355 Dec  8 23:53 sar08
-rw-r--r-- 1 root root 673355 Dec  9 23:53 sar09
-rw-r--r-- 1 root root 673355 Dec 10 23:53 sar10
-rw-r--r-- 1 root root 673355 Dec 11 23:53 sar11
-rw-r--r-- 1 root root 673355 Dec 12 23:53 sar12
-rw-r--r-- 1 root root 673355 Dec 13 23:53 sar13
-rw-r--r-- 1 root root 674697 Dec 14 23:53 sar14
-rw-r--r-- 1 root root 673355 Dec 15 23:53 sar15
-rw-r--r-- 1 root root 673355 Dec 16 23:53 sar16
-rw-r--r-- 1 root root 673355 Dec 17 23:53 sar17
-rw-r--r-- 1 root root 673355 Dec 18 23:53 sar18
-rw-r--r-- 1 root root 673355 Dec 19 23:53 sar19
-rw-r--r-- 1 root root 673355 Dec 20 23:53 sar20
-rw-r--r-- 1 root root 673355 Dec 21 23:53 sar21
-rw-r--r-- 1 root root 673355 Dec 22 23:53 sar22
-rw-r--r-- 1 root root 673355 Nov 23 23:53 sar23
-rw-r--r-- 1 root root 673355 Nov 24 23:53 sar24
-rw-r--r-- 1 root root 673355 Nov 25 23:53 sar25
-rw-r--r-- 1 root root 673355 Nov 26 23:53 sar26
-rw-r--r-- 1 root root 673355 Nov 27 23:53 sar27
-rw-r--r-- 1 root root 673355 Nov 28 23:53 sar28
-rw-r--r-- 1 root root 673355 Nov 29 23:53 sar29
-rw-r--r-- 1 root root 673355 Nov 30 23:53 sar30

最佳答案

你应该使用:

 find /var/log/sa/ -regex ".*/sa[0-3][0-9]"

因为 sa 之后的第一个字符应该是 0/1/2/3 而第二个字符应该是任何数字。

{..} 不起作用的原因是 GNU 的查找不支持 {from,to} 语法。 The default regex in find is emacs , 但 GNU 使用的版本不支持 {..} 语法。

关于regex - find -regex 不适用于 {} 说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41308348/

相关文章:

java - SFTP使用java从Windows服务器检索文件到Linux服务器

Linux-SUSE10操作系统中如何解决 'Word too long.'

在树莓派中运行两个程序时 Python 变慢

c++ - 查看 map c++中是否有键

ansible - 如何在ansible中仅发送文件路径?

linux - 查找和基本名称不能很好地播放

regex - 将 Perl 与 Regex 结合使用,如何删除字符串中的字符串?

java - 如何将 java cmd 参数与正则表达式匹配?

JavaScript 以编程方式创建正则表达式

javascript - 在 Javascript 中解析 BBCode