我正在嘗試在 Ubuntu Xenial 中按自然順序按字母順序對檔案(包括隱藏檔案)進行排序。
我做到了:
ls -l1va
哪個列印:
.
..
.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
如何使排序不區分大小寫並按字母而不是 ASCII 表中的位置排序(我認為這就是使 Z 位於 a 之前的原因)..?
答案1
排序順序取決於區域設定。預設C
區域設定按照您的範例進行排序:
$ LC_COLLATE=C ls -A
.hidden Zappa aardvark vent water zebra
但許多其他人優先考慮字母,而忽略大小寫和前導句點:
$ LC_COLLATE=en_US.UTF-8 ls -A
aardvark .hidden vent water Zappa zebra
(如果某些語言環境也考慮像這樣的字符,我不會感到驚訝v和w平等,但我想不出一個可以做到這一點的。
當然,您的系統上需要有這些區域設定。locale -a
應該顯示系統目前可用的區域設置,您可以使用locale-gen $localename
它來產生您缺少的區域設置。然後顯示dpkg-reconfigure locales
一個列表,您可以在其中選擇要生成的區域設定。
答案2
設定$LC_COLLATE
為適當的值將適當地整理名稱。
LC_COLLATE=en_US ls -l1va
另外,也可以在shell的啟動腳本中設置,以便每次生效。
export LC_COLLATE=en_US
答案3
從 Ubuntu 19.10 開始,設定LC_COLLATE=C
似乎不夠,但設定LC_ALL=C
似乎有效(例如ls
將使用 ASCII 順序作為檔案和目錄名稱)。
答案4
答案並不容易找到,但它就在 Stack Exchange 上。
「修復」涉及編輯 /usr/share/i18n/locales/iso14651_t1_common,並更改行
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
進入:
<U002E> <RES-1>;IGNORE;IGNORE;<U002E> # 47 .