find -regex不能与{}说明符

时间:2016-12-23 22:08:34

标签: 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

2 个答案:

答案 0 :(得分:1)

您应该使用:

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

由于sa之后的第一个字符应为0/1/2/3,第二个字符应为任意数字。

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

答案 1 :(得分:0)

with dVal As(
Select RowNum = row_number() over (order by datetime),DataValues.*
from datavalues)

SELECT *
  FROM (
        SELECT CAST(DateTimeUTC as SmallDateTime) as [DateTime], 
        CASE When DataValue = '-9999' Then null
            When DataValue < '-60' Then null
            Else DataValue
            End DataValue, VariableID
        FROM dVal
        WHERE 
        /* divide by 12 has no remainder */
        (RowNum % 12) = 0 and

        SiteID = @siteID and VariableID IN(9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30)
        ) TableDate
    PIVOT (SUM(DataValue) FOR VariableID IN ([9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30])) PivotTable ORDER BY [DateTime]

你必须使用posix-egrep。