Unix 列出以小写字母结尾的所有文件的命令是什么?
假设我有n个文件,如苹果、BAT、comas、aba、abc、abc03……等等 也 列出所有以小写字母结尾但不是“a”和“c”的文件的命令是什么?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
或任何特定字符您可以将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]
单个字符(这使我相信上面的说法)。这看起来像个虫子。