使用bash set构造通配符时,为什么返回混合大小写的文件名?

时间:2012-06-08 02:48:25

标签: bash

我设置了几个文件来理解bash的set构造通配符,即[]。

ls *
1  2  A  bob  darlene  dave  ed  frank  fred  LS_example.sh  Z

我希望ls [a-z]*返回的文件只包含以小写字母开头的文件,但在下文中,还会返回以大写字母开头的文件:

ls [a-z]*
A  bob  darlene  dave  ed  frank  fred  LS_example.sh

你能解释一下这种行为吗?

1 个答案:

答案 0 :(得分:2)

在您的语言环境(以及它在您的操作系统中定义的方式)中,[a-z]包括大写和小写字母。如果要可靠地匹配小写字母,请执行以下操作:

ls [[:lower:]]*