假设我有'n'个文件,例如apple,BAT,comas,aba,abc,abc03 ......等等。
也 列出以小写字母结尾但不是“a”和“c”的所有文件的命令是什么? 或任何特定字符
答案 0 :(得分:3)
关于bash:
$ 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]'
$
答案 1 :(得分:0)
您可以将ls和grep与正则表达式结合使用:
ls | grep -e "[bd-z]$"