Linux에서 ls를 사용하여 파일을 알파벳순으로 정렬하시겠습니까?

Linux에서 ls를 사용하여 파일을 알파벳순으로 정렬하시겠습니까?

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그리고동등하지만 그렇게 하는 것을 생각해낼 수 없습니다.)

물론 시스템에 해당 로캘이 있어야 합니다. 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부족한 것 같으나 설정은 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 .

보다:https://unix.stackexchange.com/a/361006/262190

관련 정보