2013-07-19 22 views
0

我有一組文件夾:如何在正則表達式中使用數字間隔?

$ ls -d _clip* 
_clip10.trim _clip12.trim _clip14.trim _clip16.trim _clip2.trim _clip4.trim _clip6.trim _clip8.trim 
_clip11.trim _clip13.trim _clip15.trim _clip1.trim _clip3.trim _clip5.trim _clip7.trim _clip9.trim 

,我需要選擇拖批文件夾,一個從_clip1.trim_clip6.trim:從_clip7.trim

$ ls -d _clip[1-6].trim 
_clip1.trim _clip2.trim _clip3.trim _clip4.trim _clip5.trim _clip6.trim 

而且對方_clip16.trim,但是當我嘗試ls -d _clip[7-16].trim只列出_clip6.trim列出。

我需要了解如何在常規表達式中使用數字組合。謝謝你的時間!

+1

http://www.regular-expressions.info/numericranges.html –

+0

請注意,shell中的globs(又名通配符)不是*正則表達式。它們有一些共同的特徵,但它們也以基本方式相互衝突(例如,'*'對於殼體而言意味着與正則表達式不同的東西)。 –

回答

6

[...]是一個字符類。當你說[7-16],這意味着「從7到1(無)的字符,和字符6」。我會說使用兩個表達式:_clip[7-9].trim _clip1[0-6].trim。看起來你並沒有全部在這個範圍內,但是如果你確實可以使用_clip{7..16}.trim

另外,在命令行上,它們是球體,而不是正則表達式。有一些區別 - *意味着任何事物或沒有任何事物,而不是任何事物的0+,與?(零或任何其他事物,而不是前面的表達式)相同。

0

有關如何使用參數發電機

$ echo _clip{1..6}.trim 
_clip1.trim _clip2.trim _clip3.trim _clip4.trim _clip5.trim _clip6.trim 
$ echo _clip{7..16}.trim 
_clip7.trim _clip8.trim _clip9.trim _clip10.trim _clip11.trim _clip12.trim _clip13.trim _clip14.trim _clip15.trim _clip16.trim 

這些都不是regexpes ... Bash可以生成參數:

$ echo x{0..1}_{FOO,BAR}_{x,y} 
x0_FOO_x x0_FOO_y x0_BAR_x x0_BAR_y x1_FOO_x x1_FOO_y x1_BAR_x x1_BAR_y 
相關問題