2011-01-11 72 views

回答

0

您可以用ls的组合和grep使用正则表达式:

ls | grep -e "[bd-z]$" 
3

巴蜀:

$ LC_ALL=C 
$ ls 
bar BAT cab foo ieee2000 MAC moc test zac zara ZOO 
$ ls *[a-z] 
bar cab foo moc test zac zara 
$ ls *[bd-z] 
bar cab foo test 
$ ls *[^cC] 
bar BAT cab foo ieee2000 test zara ZOO 
$ ls *[^bc] 
bar BAT foo ieee2000 MAC test zara ZOO 

由于这些shell expansions您还可以在循环使用它们比较容易。

LC_ALL=C设置 - 如果你使用它可以以产生正确的结果需要一个非英语语言环境:

$ echo $LC_COLLATE 
en_US.UTF-8 
$ ls *[a-z] 
bar BAT cab foo MAC moc test zac zara ZOO 
$ LC_COLLATE=C 
$ ls *[a-z] 
bar cab foo moc test zac zara 

由于样本中看到上面你可以设置更具体的LC_COLLATE变量,而不是LC_ALL

编辑:

顺便说一句,至少在我的系统(的Mandriva Linux 2010.1)上,语言环境也影响grep

$ LC_COLLATE=en_US.UTF-8 
$ echo A | grep '[a-z]' 
A 
$ LC_COLLATE=C 
$ echo A | grep '[a-z]' 
$ 
+0

我不认为有任何语言环境(仍在使用)其中`* [bd-z]`会匹配不同。当然不是任何UTF-8语言环境。 – ephemient 2011-01-11 18:25:15

相关问题