ls
我在 MacOS 11.6.1 上使用。在输出中,大写字母显示在小写字母之前。例如,我得到以下输出:
$ ls
Blabla.txt
GAGAS.txt
asdf.txt
blabla.txt
并希望有:
$ ls
asdf.txt
blabla.txt
Blabla.txt
GAGAS.txt
这是正常的默认输出吗ls
?我怎样才能得到输出数字2?
答案1
ls
POSIX 需要对其输出中的文件名进行排序根据当前语言环境中的整理顺序。
如果您的系统没有区域设置,其中排序顺序至少在比较字符串的第一遍中忽略大小写,您可以尝试通过管道传输到sort -f
:
ls -q | sort -f
(可以-q
选择通过替换文件名中的控制字符(包括换行符)来保证文件名显示在一行上?
(注意这可能会影响顺序)。
或者使用 zsh shell,使用类似以下内容:
lc() REPLY=$REPLY:l
print -rC1 -- *(o+lc)
代替ls
。即定义一个lc
辅助函数,将 的值更改$REPLY
为小写,并将其用作o
全局扩展的排序函数(不一定严格等同于不区分大小写的比较,但应该足够接近,特别是对于纯 ASCII 文本)。