`ls`에게“지능적으로”가 아니라 일반 ASCII 코드로 정렬하도록 지시하십시오.


13

몇 개의 파일이 있고 ls다음과 같이 정렬합니다.

a
_b
c

하지만 갖고 싶어

_b
a
c

어떻게해야합니까?


2
왜 그런지 물어봐도 될까요?
RolandiXor

2
밑줄을 사용하여 맨 위로 이동해야하는 특수 디렉토리를 나타냅니다. 내 프로젝트 폴더에는 proj_a, proj_b 및 _old_projects가 있습니다. 이 폴더가 o- 프로젝트 내에 있으면 사용되지 않습니다.
Martin Ueding 2016 년

답변:


9

일회성 명령으로 다음을 수행 할 수 있습니다.

LC_COLLATE=C ls

또는 export LC_COLLATE="C".bashrc에 추가 하여 영구적으로 만들 수 있습니다 (다른 곳에서 예기치 않은 결과 정렬이 발생할 수 있음).

우분투 포럼 에 대한 추가 정보 .


1
나는 그것으로 별명을 붙이고 부작용이 없도록 추측합니다.
Martin Ueding 2016 년

이것은 나를 위해 작동하지 않습니다. 나는 이것을 얻습니다-> paste.pocoo.org/show/403333 (독일어이지만 중요하지 않습니다)
dAnjou

2
@dAnjou LC_COLLATE=Cls는 전통적인 POSIX 정렬 순서를 설정합니다. 이는 ASCII로 밑줄 앞에 대문자가옵니다. 대문자 앞에 밑줄을 정렬하려면 보닛 아래에 있어야하고 / usr / share / i18n / locales 아래에 사용자 정의 로케일 정의를 작성해야합니다.
misterben 2016 년

2
이것은 과거에는 효과가 있었지만 Ubuntu 12.04에서는 작동하지 않습니다.
Mikel

1
우분투 14.04부터는 LC_COLLATE=C ls작동하지 않지만 작동 LC_ALL=C ls합니다.
jwodder

6

이 작업을 수행하는 기본 제공 방법이없는 경우 다음과 같은 간단한 대체 방법을 사용할 수 있습니다 sort.

#!/usr/bin/env python

import sys

for i in sorted(sys.stdin):
    sys.stdout.write(i)

예를 들어 at에 저장하고 /bin/pysort실행 파일 ( sudo cp whatever.py /bin/pysortsudo chmod a+x /bin/pysort)로 만들고 다음과 같이 실행하십시오 ls | pysort.

stefano@lenovo:~/t$ ls | pysort
_b
a
c

1
아마 그것을 넣었 ~/bin지만 멋진 대체품입니다. 파일 이름에 줄 바꿈이 있으면 ls의 출력이 이상 할 수 있으므로 파이썬 내에서 globbing을 사용하는 것이 좋습니다.
Martin Ueding 2016 년

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.