Unix의 'ls'이름순 정렬


127

ls 목록을 이름으로 정렬 할 수 있습니까 ?


10
인수없이 이름별로 정렬하지 않는 경우 ls가 다른 별칭으로 지정되었는지 확인하거나 존재하는 모든 별칭을 제거하는 전체 경로를 사용하여 호출 할 수 있습니다.
— tvanfosson

gnu-coreutils ls는 기본적으로 정렬됩니다. 어떤 시스템을 사용하고 있습니까 (다른 사람이 요청
— 했듯이

유형 (즉, 디렉토리 먼저 파일)을 기준으로 정렬하지 않고 이름으로 정렬 하시겠습니까?
— curtisk

대문자가 소문자보다 먼저 나오므로 파일 Z가 파일 a보다 앞에 와요 ... 어떻게 고칠 수 있나요?
— ArtOfWarfare

맨 페이지에 '별도 및 사전 순으로 정렬 됨'이 표시됩니다. 파일은 첫 번째 문자에 따라 정렬됩니다 : 숫자 [0..9] 및 UPPER 문자 [A..Z] 및 로우 문자 [a..z]
— Gürol Canbek

답변:


131

My ls는 기본적으로 이름별로 정렬됩니다. 당신은 무엇을보고 있습니까?

man ls 상태 :

List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.:


ls-c1지정된 경우 정렬하지 않습니다 : 그렇게 할 수있는 방법이 있습니까? ( --sort=name작동하지 않는 것 같습니다)
— dhc

1
그것은 사실이 아닙니다. 와 함께 ls -la, 내가 봅니다 : .bashrc - can - .config - Downloads - .local - tmp, 정렬 이름은 다음과 같습니다..bashrc - .config - .local - Downloads - can - tmp
— 12431234123412341234123

1
내 말은 100.jpg가 10.jpg보다 먼저옵니다. "0"이 "."앞에 오면 이해할 수 있습니다. 하지만 여전히 직관적이지
— chiliNUT

"b"앞에 "M"이 표시됩니다. 혼란스러워. 잠깐, 대문자가 중요합니까?
— Daniel Springer

106

간단한 것을 위해 ls 를 sort 와 결합 할 수 있습니다 . 파일 이름 목록 :
ls -1 | 종류

역순으로 정렬하려면 :
ls -1 | 정렬 -r


3
다음과 같이 파일을 정렬하는 방법이 있습니까? ls | sort -n 1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; 2.10.2 이전에 2.10.15를 볼 수 있습니다 .
— BBK

저는 Pidion 기기에서 안드로이드 개발을하고 있는데 ls가 자동으로 정렬되지 않아서 매우 도움이되었습니다! 유일한 문제는 소프트 링크를 정렬하는 것처럼 보이지만 어떤 이유로 파일을 정렬하지 않는다는 것입니다
— Mitch

Mac에서는 두 번째 명령을 ls -1r.
— Ash Ryan Arnwine

4
@BBK sort -V는 버전 번호별로 정렬하므로 .. 2.10.2; 2.10.15; .. from man sort .. --sort = WORD는 WORD에 따라 정렬됩니다 : general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V
— mosh

35

lsfrom coreutils은 기본적으로 로케일 인식 정렬 을 수행 하므로 경우에 따라 놀라운 결과를 생성 할 수 있습니다 (예 : 및 에서 %foo정렬 ). ASCIIbetical 정렬을 원하면 다음을 사용하십시오.barquuxLANG=en_US

LANG=C ls

LANGilfnuence 정렬 동작,이 게시물은 나를 많이 도와줍니다!
— yurenchen

이것은 나에게도 효과적이었습니다. 이것에 대해 자세히 설명해 주시겠습니까? 왜 다르게 정렬됩니까?
— Kostas

1
이 용량은 작동하지만 출력 ?이 터미널 인 경우 모든 비 ASCII 문자에 대한 출력입니다 (ls의 잘못된 기능은 터미널로 출력되는지 확인하고 배관 할 때 작동합니다). cat to cat으로이 문제를 "수정"하고 C.UTF-8로케일을 사용하거나 (시스템에서 지원하는 경우) -b플래그를 사용할 수 있습니다 . 더 나은, 전혀 사용하지 말고 ls더 나은 사용`
— 12431234123412341234123

이를 통해 파일 이름 중 일부에 하이픈 (-)이 포함되어 있고 일부는 엔 대시 (-)가 포함되어 있다는 사실을 알게되었습니다. ls대시 앞의 하이픈을 정렬합니다.
— Jamy Mahabier

17

* nix 도구의 장점은 다음과 같이 결합 할 수 있다는 것입니다.

ls -l | sort -k9,9

의 출력 ls -l은 다음과 같습니다.

-rw-rw-r-- 1 luckydonald luckydonald  532 Feb 21  2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt

따라서 9,9열을 열 9까지 정렬 9하여 파일 이름이됩니다. 중지 할 위치를 제공해야합니다.이 경우 동일한 열입니다. 열은로 시작합니다 1.

또한 대 / 소문자를 무시 --ignore-case하려면 sort 명령에 추가하십시오 .


1
무슨 -k9,9뜻이야?
— luckydonald

발견 9하면 동일한 열까지 열을 정렬하는 것을 의미합니다 9. 정상적인 ls출력은 다음과 같습니다 : drwx------ 8 999 user 4.0K Feb 5 2017 file.txt, 따라서 9 열은 파일 이름입니다. 대소 문자를 무시하려면 --ignore-caseon sort를 사용하십시오 .
— luckydonald

8

주의 사항 : "a"는 "Z"뒤에옵니다.

$ touch A.txt aa.txt Z.txt

$ ls

A.txt Z.txt aa.txt


3
이것은 항상 사실이 아닙니다. 이것이 사실이 아닌 상황을 정확히 알지 못하지만 Ubuntu 12.04를 실행하는 내 컴퓨터에서 ls의 출력이 알파벳순으로 정렬됩니다 (대소 문자 무시).
— Patrick James McDougle 2013 년

잘 잡아! 는 ASCII 코드를 기반으로 그것을 주문처럼 .. 대문자 알파벳 소문자 뒤에 것 같다 ..
— 켄트 Pawar에게

1
내 MacOS가 첫 번째 숫자, 대문자, 밑줄, 소문자 순으로 정렬하는 것을 확인했습니다. 대소 문자를 구분하지 않는 것이 재밌습니다. 다른 한편으로, 제 데비안은 대소 문자를 구분하지만 동점이 없으면 문자를 구분하지 않고 정렬합니다. 그러면 소문자가 이깁니다! 예 : ABA.txt ABb.txt aBC.txt AbC.txt ABc.txt
— zk82

나도 MAC에 있습니다. A, Z, a, z 유형의 정렬을보고 실망했습니다. 나는 A, a, Z, a를 선호하기 때문에 여기에 있습니다. 팁 주셔서 감사합니다. normal여기 에서 해결책 을 시험해 볼 것 입니다.
— nyxee

8

숫자 문자열 만 다른 파일은 구분 기호가 앞에 오는 조건에서이 번호로 정렬 할 수 있습니다.

이 경우 다음 구문을 사용할 수 있습니다.

ls -x1 file | sort -t'<char>' -n -k2

예:

ls -1 TRA*log | sort -t'_' -n -k2

TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log

4

man 페이지에서 (bash ls 용) :

-cftuSUX 또는 --sort가 없으면 항목을 알파벳순으로 정렬합니다.


3
"bash ls"가 없습니다. "which ls"수행
— Norbert Hartl

@Norbert : 맞습니다.하지만 which lsbash에 ls가 내장되어 있어도 성공할 것입니다. 오히려 builtin lsbash 에서 수행 하면 오류가 발생합니다.
— Pianosaurus

4
@Norbert : which항상 경로를 반환합니다. type ls쉘이 생각하는 ls것 (내장, 기능, 실행 가능) 을 판별하는 데 사용하십시오 .
— ephemient

3

ls유틸리티는 IEEE 표준 1003.1-2001 (준수해야합니다 POSIX.1상태) :

22027 : 현재 로케일의 조합 순서에 따라 디렉토리 및 비 디렉토리 피연산자를 개별적으로 정렬합니다.

26027 : 기본적으로 형식은 지정되지 않지만 출력 은 기호 이름에 따라 알파벳순으로 정렬됩니다 .

  • −A가 지정된 경우 라이브러리 또는 객체 이름
  • 기호 이름
  • 기호 유형
  • 기호의 가치
  • 해당되는 경우 기호와 관련된 크기


2

ls -X는 ls를 더 유용한 기본값으로 별명을 지정한 경우 이러한 목적으로 작동합니다.


0
In Debian Jessie, this works nice:

ls -lah --group-directories-first

# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha

# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.