列出以小写字母结尾的所有文件的命令是什么?

时间:2011-01-11 18:14:07

标签: unix

假设我有'n'个文件,例如apple,BAT,comas,aba,abc,abc03 ......等等。

也 列出以小写字母结尾但不是“a”和“c”的所有文件的命令是什么? 或任何特定字符

2 个答案:

答案 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]$"