使用该命令时,有没有办法设置文件和目录的排序顺序ll
?我有两台 16.04.5 服务器,带有两个ext4
驱动器。两个驱动器上都有一个包含相同文件的文件夹。ll
在两台服务器上使用时,排序顺序不一样(ls -l
结果相同):
ll
在服务器a上:
Alex.txt
iBoy.txt
Immatriculation.txt
Radius.txt
WonderWoman.txt
ll
在服务器b上:
Alex.txt
Immatriculation.txt
Radius.txt
WonderWoman.txt
iBoy.txt
因此,区别在于文件iBoy.txt
。有没有办法找出为什么此文件不在服务器 a 上位于Alex.txt
和之间Immatriculation.txt
?
编辑1:
根据要求,以下是两个系统的语言环境。
locale
在服务器a上:
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=
locale
在服务器b上:
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=
答案1
ls
' 排序顺序由您的语言环境的排序规则设置定义。您可以使用以下命令轻松检查locale
:
$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=
对于排序来说,重要的是LC_COLLATE
值。在我上面的例子中,它会根据en_US.UTF.8
本地化规则进行排序,这将对文件名进行不区分大小写的排序,并且似乎会忽略标点符号。
您可以使用环境变量临时覆盖全局设置。例如,C
语言环境/排序规则将按原始 ASCII 值排序,因此所有大写字母都位于小写字母之前。
LC_COLLATE=C ll