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