(현재 디렉토리 내의) 디렉토리만 나열하려면 다음을 사용하십시오.ls -d */
일반 파일, 실행 파일, 소프트 링크 또는 기타 유형의 파일만 나열하려면 어떻게 해야 합니까?
실행 파일, 심볼릭 링크 파일, 디렉토리 에 ls -F
추가하기 때문에 시도 했지만 작동하지 않습니다.*
@
/
ls -d **
ls -d *@
답변1
에 설명된 파일 테스트 연산자를 사용할 수 있습니다 man test
. 예를 들어 심볼릭 링크를 나열하려면 다음을 수행합니다.
for i in *;do if [ -L "$i" ] ;then printf -- "%s\n" "$i";fi;done
답변2
당신은 그것을 사용할 수 있습니다 find
.
모든 파일 나열:
find . ! -name . -prune -type f
모든 심볼릭 링크를 나열합니다.
find . ! -name . -prune -type l
모든 실행 파일을 나열합니다.
find . ! -name . -prune -type f -perm +111
POSIX를 읽을 수 있습니다찾다고급 옵션에 대한 문서입니다.
답변3
이와 같은 명령은 ls -d *@
로 시작하는 이름을 나열합니다 @
. 이 @
문자는 파일 이름이 일치해야 하는 패턴의 일부입니다. 파일 이름 뒤에 문자가 표시 되면 ls -F
해당 문자는 파일 이름의 일부가 아니며 추가 표시가 추가됩니다 ls
(이 옵션의 요점 -F
).
ls
나열할 파일 형식을 선택하는 옵션이 없습니다. 파일 이름에 특수 문자(예: 줄 바꿈 또는 ls -F
추가된 접미사) 가 포함되어 있지 않은 경우 ls -F
특정 유형의 파일을 나열하고 를 사용하여 해당 출력을 필터링할 수 있습니다. 예를 들어, 현재 디렉토리의 심볼릭 링크를 나열하려면 다음을 사용할 수 있습니다.
ls -F | grep '@$'
선택한 유형의 파일을 나열하는 보다 안정적인 방법은 find
명령을 사용하는 것입니다. ls
와 달리 find
재귀적입니다. 이 -prune
작업을 사용하면 재귀를 중지할 수 있습니다. 또 다른 차이점은 이름이 find
(dot-file)로 시작하는 파일은 쉘 모드처럼 특별히 처리되지 않고 건너뛰어진다는 것입니다 . 예를 들어, 다음 명령은 현재 디렉터리의 심볼릭 링크를 나열합니다..
ls
*
find . -name . -o -type l -print -o -prune
필터링을 수행하는 또 다른 방법은 모든 파일을 반복하고 테스트하여 원하는 파일을 선택하는 것입니다.
for x in *; do
if [ -L "$x" ]; then echo "$x"; fi
done
zsh에서는 사용할 수 있습니다글로벌 예선유형별로 파일을 제한합니다. 예를 들어, 다음 zsh 명령은 현재 디렉터리의 기호 링크를 나열합니다.
print -rl *(@)
답변4
목록에서 c 소스 파일(접미사 .c)만 보고 싶다고 가정해 보겠습니다.
ls -l *.c
그러면 모든 C 코드 파일이 나열됩니다.
즐기다