ls
옵션과 함께 명령을 사용하면 -l
첫 번째 문자 문자열이 각 파일에 대한 정보를 제공 하고이 문자열의 첫 번째 문자는 파일 유형을 제공합니다. ( d
= 디렉토리, -
= 표준 파일, l
= 링크 등)
첫 글자에 따라 파일을 어떻게 필터링합니까?
답변
grep
이 방법으로 디렉토리를 제외한 모든 것을 걸러 낼 수 있습니다 .
ls -l | grep '^d'
는 ^
패턴이 줄의 시작 부분에 있음을 나타냅니다. 교체 d
로 -
, l
적용 가능한, 등.
물론 다른 명령을 사용하여 특정 유형 (예 :)을 직접 검색하거나이 첫 문자를 기반으로 유사한 유형을 함께 그룹화 find . -maxdepth 1 -type d
하는 ls -l | sort
데 사용할 수 있지만 필터링하려면 grep
출력에서 적절한 행만 선택 해야합니다 .
답변
모든 출력을 표시하려고하지만 비슷한 유형의 파일을 함께 나열하려면 각 행의 첫 번째 문자에서 출력을 정렬 할 수 있습니다.
ls -l | sort -k1,1
답변
이 명령 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. [...]
답변
다른 파일 형식에서 폴더를 정렬하는 것이 가장 우려되는 경우
ls --group-directories-first
그렇지 않으면 Anthon의 답변에 따라 ls -l의 출력을 sort 또는 grep을 통해 파이프해야한다고 생각합니다.
답변
ls -l | awk '/^d/{print $NF}
awk는 d로 시작하는 모든 것을 잡을 것입니다. d는 디렉토리 용이므로 디렉토리 이름을 나열하려면 마지막 필드를 인쇄해야합니다.
답변
ls -l | sort
각 결과의 알파벳 순서에 따라 결과가 정렬됩니다. 첫 번째 문자가 원하는 기준이라면 바로 그 것입니다. 파일 이름 만 필요한 경우 다음을 시도해보십시오.
ls -l | sort | cut -f 2 -d ' '
또는 비슷한 명령 (이 명령은 공백 구분 기호를 사용하여 각 줄을 정렬 한 다음 두 번째 그룹을 반환합니다.