it-swarm-ko.com

파일 확장자로 정렬하고 이름을 지정하는 방법은 무엇입니까?

기본적으로 ls 명령은 파일 이름을 기준으로 정렬하지만 디렉토리가 다른 파일 유형보다 먼저 나타나기를 원합니다. Windows 탐색기가 형식 열을 기준으로 정렬하는 방식과 같이 확장명별로 파일을 정렬하고 싶을 수도 있습니다. ls와 비슷한 것을 할 수있는 방법이 있습니까?

46
allyourcode

나는 완전한 대답이 위의 조합에 더 가깝다고 생각합니다.

-X (later --sort=extension)은 (는) 적어도 FC3부터 Linux에서 지원되었으며 확장자를 기준으로 정렬합니다. --group-directories-first가 최근에 추가되었습니다 (FC8 정도?). 그러나 두 가지를 결합해도 효과가없는 것 같습니다 (적어도 FC8에서는).

주요 문제는 단일 기본 정렬 키를 사용하는 것으로 보입니다. 그것에 대한 통찰력을 얻으려면이 메일 링리스트 토론 을 참조하십시오.

44
CS

리눅스에서는

$ ls --group-directories-first

(man ls 당신의 친구입니다!)

23
Ned Deily

-X는 당신이 찾고있는 옵션입니다 :

ls -lX
14
Carl Manaster

Bash에서 이것은 일종의 작업입니다.

$ ls | rev | sort | rev

man rev에서 :

 The rev utility copies the specified files to the standard output,
 reversing the order of characters in every line.  If no files are speci-
 fied, the standard input is read.

따라서 1. ls는 원하는 플래그와 함께 출력을 제공합니다. 2. 각 줄은 뒤집어집니다 3. 그런 다음 정렬됩니다 4. 다시 정렬됩니다 5. 다음과 같이 :

  1. 이처럼 :
  2. 각 줄은 반대로
  3. 그런 다음 정렬됩니다
  4. 다시 거꾸로
  5. ls는 원하는 플래그로 출력을 제공합니다.

또는 아래와 같이 요점을 더 자세히 설명하십시오. 그것들은 마지막 문자로 정렬 된 다음 마지막으로 정렬됩니다. 예를 들어, 모든 .rtf 파일은 .save 파일과 이름이 'e'로 끝나는 확장자가없는 다른 파일 뒤에 함께 나열됩니다. 그런 다음 .png 파일 등을 가져옵니다. 확장명은 일반적으로 줄의 마지막 항목이기 때문에 ls -l에서도 작동합니다 ( "tmp @->/home/jones/tmp"와 같은 행이 있고 링크 뒤에 대상이 오는 경우는 예외).

 $ ls | rev | sort | rev 
 cslu1 
 ls.mp2 
 ls.mp3 
 ls.mp4 
 trees_110214-15 
 PAT 
 CSLU 
 프록시 Form.doc 
 finannbyid 
 toannbyid 
 101209ssi.txt.save 
 to_annotate_size 
 Matas-time -by-week-integration2.rtf 
 cyp3.rtf 
 data-dir-scan.Perl.doc.rtf 
 whence-r21-numid.rtf 
 오리너구리 .rtf 
 스크린 샷 2011-01-21 오후 2.17.50 PM.png 
 emacs print help.png 
 log 
 new_month_log 
 special 
 Google-ngram-critique.html 
 Perl_path.html 
 nl 
 DWE_BEN_89808.2.ann 
 foo 
 dofoo 
 100811_from_iMac_Documents_in_dock.Zip 
 to-palikir.Zip 
 tmp 
 파일 정리 
 막대 
 data-scan-docs 
 cmp-mg-ann-numids 
 finished_numids 
 to_annotate_numids 
 manls.ps 
 Mike_address_ticket 
 cyp2.out 
 cyp3.out 
 locate-cyp.out 
 manls.out 
 DWE_BEN_89808.2.text [.___ _.] tag2.txt 
 l2.txt 
 du-h-d3.txt 
 finished_ann_numids_110407_1714.txt 
 finished_all_numids_110407_1718.txt 
 data-dir -scan.Perl.doc.txt 
 whence-r21-numid.txt 
 finannid.txt 
 toannid.txt 
 b9-workspace-anndiff.txt 
 tag.txt 
 duh.txt 
 do-mail.txt 
 safextn.txt 
 mg3longhdr.txt 
 finished_numids.txt 
 41692-langnames.txt 
 TimeAnnotationGuidelines.txt 
 41langs.txt 
 thing4-homedir-links.txt 
 bnlinks.txt 
 부여 .txt 
 mata-file-reports.txt 
 logx.txt 
 logx 
 b9-workspace-anndiff.txt ~ 
 bnlinks.txt ~ 
13
M. Mandel

Linux에서 실행중인 경우 GNU ls--sort 옵션 :-

ls --sort=extension
3
DaveR

리눅스를 사용하지 않는다면

ls -l |sort -d -k 1.1,1.1r -k 9 |awk '{print $9}'

먼저 디렉토리를 정렬해야합니다 (잘못된 경우 알려주세요). 확장을 기준으로 정렬하지는 않습니다. 원한다면 awk 문을 훨씬 더 바쁘게 만들어야합니다 ...


공백이 포함 된 이름으로도 작동하게하려면 아마도 awk를 sed -E -e 's/([^ ]+[ ]+){8}//'과 같은 것으로 바꾸어 9 번째를 인쇄하는 대신 처음 8 개의 필드를 제거합니다.

3
Zac Thompson

나는 .bashrc (linux)에 라인을 추가했다.

alias lx = "ls -X"

그런 식으로 lx를 입력하고 확장자별로 정렬합니다.

0
user192273

좋은 접근 방식은 처음에는 폴더를 분리 한 다음 확장자별로 파일 분류를 정렬 및 분류하여 분리하는 것입니다.

ls -p | grep /;ls -p | grep -v / | rev | sort | rev
0
PYK