Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 列出以小写字母结尾的所有文件的命令是什么?_Unix - Fatal编程技术网

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

Unix 列出以小写字母结尾的所有文件的命令是什么?,unix,Unix,假设我有n个文件,如苹果、BAT、comas、aba、abc、abc03……等等 也 列出所有以小写字母结尾但不是“a”和“c”的文件的命令是什么? 或任何特定字符您可以将ls和grep与正则表达式结合使用: ls | grep -e "[bd-z]$" 您可以将ls和grep与正则表达式结合使用: ls | grep -e "[bd-z]$" 在bash上: $ LC_ALL=C $ ls bar BAT cab foo ieee2000 MAC moc test zac

假设我有n个文件,如苹果、BAT、comas、aba、abc、abc03……等等

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

您可以将ls和grep与正则表达式结合使用:

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

您可以将ls和grep与正则表达式结合使用:

ls | grep -e "[bd-z]$"
在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
因为这些是你可以相对容易地在循环中使用它们

请注意
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\u COLLATE
变量,而不是
LC\u 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]'
$ 
在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
因为这些是你可以相对容易地在循环中使用它们

请注意
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\u COLLATE
变量,而不是
LC\u 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地区。嗯,你说得对
fnmatch
将排序规则应用于范围,而不是
[x]
单个字符(这使我相信上面的说法)。这似乎是一个错误。我不认为有任何地区(仍在使用中)的
*[bd-z]
会有不同的匹配。当然不是任何UTF-8地区。嗯,你说得对
fnmatch
将排序规则应用于范围,而不是
[x]
单个字符(这使我相信上面的说法)。这看起来像个虫子。