使用命令时有没有办法设置文件和目录的排序顺序ll
?我有两个带两个ext4
驱动器的 16.04.5 服务器。两个驱动器上存在一个文件夹,其中包含相同的文件。在两台服务器上使用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=
ls
' 排序顺序由您的语言环境的排序规则设置定义。您可以使用以下locale
命令轻松检查:排序重要的是
LC_COLLATE
值。在我上面的示例中,它将根据en_US.UTF.8
本地化规则进行排序,这将对文件名进行不区分大小写的排序,并且似乎忽略了标点符号。您可以使用环境变量临时覆盖全局设置。例如,
C
语言环境/排序规则将按原始 ASCII 值排序,因此所有大写字母都在小写字母之前。