ls를 사용하여 유형별로 파일을 나열하는 방법은 무엇입니까?

ls를 사용하여 유형별로 파일을 나열하는 방법은 무엇입니까?

lsoptions 와 함께 명령을 사용할 때 -l첫 번째 문자 문자열은 각 파일에 대한 정보를 제공하고 문자열의 첫 번째 문자는 파일 유형을 제공합니다. ( d=디렉토리, -=표준 파일, l=링크 등)

첫 글자를 기준으로 파일을 필터링하는 방법은 무엇입니까?

답변1

grep다음을 사용하여 디렉터리를 제외한 모든 항목을 필터링할 수 있습니다.

ls -l | grep '^d'

^패턴이 줄의 시작 부분에 있음 을 나타냅니다 . 해당되는 경우 등 d으로 교체합니다.-l

물론 다른 명령을 사용하여 특정 유형(예: find . -maxdepth 1 -type d) 을 직접 검색하거나 ls -l | sort첫 번째 문자를 기준으로 유사한 유형을 그룹화할 수 있지만 필터링하려면 grep출력에서 ​​적절한 행만 선택해야 합니다.

답변2

모든 출력을 표시하되 유사한 유형의 파일을 함께 나열하려면 각 줄의 첫 번째 문자를 기준으로 출력을 정렬할 수 있습니다.

ls -l | sort -k1,1

답변3

명령을 ls처리하는 중입니다.파일 이름, 디렉토리 데이터 구조에 기록됩니다. 따라서 파일의 "유형"을 포함하여 파일 자체에는 실제로 신경 쓰지 않습니다.

작업에 대한 더 나은 명령실제 문서는 이름 그 이상입니다 find. 파일 형식 목록을 필터링하는 방법에 대한 질문에 직접 답변하는 옵션이 있습니다.

이는 다음과 유사한 현재 디렉토리 목록을 제공합니다 ls -l.

find . -maxdepth 1 -ls

기본적으로 find디렉터리는 반복적으로 나열되며 검색 깊이를 1로 제한하여 이 기능을 비활성화합니다. 생략할 수 있지만 .옵션 앞에 나열해야 하는 디렉터리를 표시하기 위해 포함했습니다.

를 사용하면 일반 파일이나 디렉터리 -type로 표현되는 파일 형식별로 필터링할 수 있습니다 f.d

find . -maxdepth 1 -type d -ls

-type특히 l심볼릭 링크의 경우 다른 필터 값이 있습니다 .

참고하세요심볼릭 링크의 복잡성: 이 경우 두 가지 유형의 파일이 있습니다. l기호 링크를 나타내는 와 f링크되는 파일 유형을 나타내는 유사한 파일입니다. 이를 처리하는 방법을 지정하는 옵션이 있으므로 선택할 수 있습니다.


~에서man find:

    -type c
           File is of type c:

           b      block (buffered) special

           c      character (unbuffered) special

           d      directory

           p      named pipe (FIFO)

           f      regular file

           l      symbolic link; this is never true if the  -L  option
                  or  the -follow option is in effect, unless the sym‐
                  bolic link is broken.  If you  want  to  search  for
                  symbolic links when -L is in effect, use -xtype.

           s      socket

           D      door (Solaris)

심볼릭 링크 처리와 관련:

    -xtype c
           The  same as -type unless the file is a symbolic link.  For
           symbolic links: if the -H or -P option was specified,  true
           if the file is a link to a file of type c; if the -L option
           has been given, true if c is `l'.  In other words, for sym‐
           bolic  links, -xtype checks the type of the file that -type
           does not check.

그리고

    -P     Never follow symbolic links.  This is  the  default  behav‐
           iour.  When find examines or prints information a file, and
           the file is a symbolic link, the information used shall  be
           taken from the properties of the symbolic link itself.


    -L     Follow symbolic links.  When find examines or prints infor‐
           mation about files, the information  used  shall  be  taken
           from  the  properties of the file to which the link points,
           not from the link itself (unless it is  a  broken  symbolic
           link  or  find  is  unable to examine the file to which the
           link points).  Use of this option implies -noleaf.  If  you
           later  use  the -P option, -noleaf will still be in effect.
           If -L is in effect and find discovers a symbolic link to  a
           subdirectory during its search, the subdirectory pointed to
           by the symbolic link will be searched.

           When the -L option is in effect, the -type  predicate  will
           always  match  against the type of the file that a symbolic
           link points to rather than the link itself (unless the sym‐
           bolic  link  is  broken).   Using  -L causes the -lname and
           -ilname predicates always to return false.


    -H     Do not follow symbolic links, except while  processing  the
           command  line  arguments. [...]

답변4

다른 파일 형식의 폴더를 정렬하는 것이 가장 염려되는 경우 다음을 선택할 수 있습니다.

ls --group-directories-first

그렇지 않으면 Anthon의 답변에 따라 sort 또는 grep을 통해 ls -l의 출력을 파이프해야 한다고 생각합니다.

관련 정보