假设我有“N”文件,如苹果,BAT,昏迷,ABA,ABC,abc03的数量.....等列出以小写字母结尾的所有文件的命令是什么?
也 什么命令列出所有文件,终止于小字母,但不是'a'和'c'? 或任何特定的字符
假设我有“N”文件,如苹果,BAT,昏迷,ABA,ABC,abc03的数量.....等列出以小写字母结尾的所有文件的命令是什么?
也 什么命令列出所有文件,终止于小字母,但不是'a'和'c'? 或任何特定的字符
您可以用ls的组合和grep使用正则表达式:
ls | grep -e "[bd-z]$"
巴蜀:
$ 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]'
$
我不认为有任何语言环境(仍在使用)其中`* [bd-z]`会匹配不同。当然不是任何UTF-8语言环境。 – ephemient 2011-01-11 18:25:15