在 Linux 上使用 ls 按字母顺序对文件进行排序?

nkk*_*law 1 linux ls ubuntu sort

我正在尝试在 Ubuntu Xenial 中按自然顺序按字母顺序对文件(包括隐藏文件)进行排序。

我得到了这个:

ls -l1va
Run Code Online (Sandbox Code Playgroud)

哪个打印:

.
..
.ICEauthority
.Private
.Xauthority
.atom
.babel.json
.bashrc
.bash_history
.bash_logout
.cache
.cargo
.config
.dbeaver4
.dbeaver-drivers
.dbus
.docker
.eclipse
.ecryptfs
.electron
.fltk
.gconf
.gem
.gimp-2.8
.gitconfig
.gksu.lock
.gnome
.gnome2
.gnome2_private
.gnupg
.local
.mozilla
.nano
.node-gyp
.npm
.nvm
.pki
.profile
.putty
.recently-used
.selected_editor
.ssh
.sudo_as_admin_successful
.thumbnails
.v8flags.6.2.414.32-node.8.4654dce123559e380233361202560f0e.json
.vmware
.vscode
.vscode-insiders
.wget-hsts
.xsession-errors
.xsession-errors.old
.yarn
.yarnrc
Desktop
Documents
Downloads
Music
Pictures
Projects
Public
Templates
Videos
bin
mnt
tmp
Run Code Online (Sandbox Code Playgroud)

我怎样才能让排序不区分大小写并按字母排序而不是在 ASCII 表中的位置(我认为这是使 Z 在 a 之前的原因)..?

ilk*_*chu 8

排序顺序取决于语言环境。默认C语言环境按您的示例排序:

$ LC_COLLATE=C ls -A
.hidden  Zappa  aardvark  vent  water  zebra
Run Code Online (Sandbox Code Playgroud)

但许多其他人优先考虑字母,而忽略大小写和领先时期:

$ LC_COLLATE=en_US.UTF-8 ls -A
aardvark  .hidden  vent  water  Zappa  zebra
Run Code Online (Sandbox Code Playgroud)

(如果某些语言环境也认为像vw这样的字符相等,我不会感到惊讶,但我想不出一个能做到这一点的。)

当然,您需要在系统上拥有这些语言环境。locale -a应该显示系统上当前可用的语言环境,您可以使用它locale-gen $localename来生成您缺少的语言环境。然后dpkg-reconfigure locales显示一个列表,您可以在其中选择要生成的语言环境。