在我的一个系统中,当我运行 时ls [:lower:]*
,它将列出所有以小写字母开头的文件。
在另一种情况下,它会报错:
ls: cannot access [:lower:]*: No such file or directory
工作目录中有一些以小写字母开头的文件。
相反,运行ls [[:lower:]]*
将在两个系统上运行。我想了解为什么ls [:lower:]*
在第二个系统中不起作用以及使用字符类的正确方法是什么。
两者都运行 Bash,但我想要一个也可以应用于其他 shell 的答案。
答案1
你的第一个例子并没有达到你的预期;相反,它列出了以以下任一字符开头的所有文件名:
:
e
l
o
r
w
(这些是 的字母lower
,已重新排序)。要使用字符类,您必须已位于方括号内进而使用[:lower:]
,如第二个示例中所示。