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
(一部のロケールでは、次のような文字も考慮されるかもしれませんが、ヴそしてわ同等であると考えていますが、そうするものが思いつきません。
もちろん、これらのロケールがシステム上に存在している必要があります。 にlocale -a
は現在システムで使用可能なロケールが表示され、これを使用してlocale-gen $localename
不足しているロケールを生成できます。次に、dpkg-reconfigure locales
に生成するロケールを選択できるリストが表示されます。
答え2
$LC_COLLATE
適切な値に設定すると、名前が適切に照合されます。
LC_COLLATE=en_US ls -l1va
さらに、毎回有効になるようにシェルの起動スクリプトで設定することもできます。
export LC_COLLATE=en_US
答え3
Ubuntu 19.10 では、設定がLC_COLLATE=C
不十分なようですが、設定は機能しているようです (ファイル名とディレクトリ名に ASCII 順を使用するLC_ALL=C
など)。ls
答え4
答えを見つけるのは簡単ではありませんでしたが、Stack Exchange にありました。
「修正」には、/usr/share/i18n/locales/iso14651_t1_commonを編集し、次の行を変更することが含まれます。
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
の中へ:
<U002E> <RES-1>;IGNORE;IGNORE;<U002E> # 47 .