문자 L로 시작하지 않는 디렉토리의 모든 폴더를 나열하는 방법은 무엇입니까?

문자 L로 시작하지 않는 디렉토리의 모든 폴더를 나열하는 방법은 무엇입니까?

L로 시작하지 않는 모든 폴더를 나열하고 싶습니다.

ls [L]* ///gives all the folders starting with L 

검색을 반대로 하고 L로 시작하지 않는 모든 폴더를 나열하고 싶습니까?

답변1

사용 ^:

ls [^L]*

원하는 것을 수행합니다. ls [L]*원하는 항목에 해당한다고 가정합니다(폴더뿐만 아니라 "L"로 시작하는 모든 항목이 나열됩니다).

cuonglm의 답변를 사용하여 목록을 폴더로 제한하는 방법을 보여줍니다 zsh.

답변2

사용하는 것을 이라고 합니다와일드카드, POSIX 셸의 디렉터리나 파일을 필터링할 수 없습니다.

그리고 zsh:

print -rl -- [^L]*(/)

디렉토리를 숨기려면:

print -rl -- [^L]*(D/)

앞쪽:

find . ! -name . -prune ! -name 'L*' -type d

답변3

실제로 ls [L]*( 와 동일 ls L*) 이름이 로 시작하는 디렉터리가 아닌 현재 디렉터리의 파일을 나열하고 L, 이름이 로 시작하는 현재 디렉터리의 하위 디렉터리 내용을 나열합니다 L. 현재 디렉토리에서 디렉토리가 아니고 이름이 로 시작하는 파일을 나열하려면 다음 옵션을 L전달해야 합니다 .-dls -d L*

이름이 다음 문자로 시작하지 않는 파일을 일치시키려면 L다음을 사용할 수 있습니다.글로벌 모드 [^L][!L]( 다른 쉘과 호환되도록 작성할 수도 있습니다 ). [^L]Except 를 제외한 모든 문자와 일치하므로 L, [^L]*Except 를 제외한 모든 문자로 시작하는 파일 이름과 일치합니다 L. 파일 이름은 비워둘 수 없으므로 [^L]*정확한 일치는 L.

또는 extended_glob옵션이 설정된 경우(대부분의 사용자가 에 입력 .zshrc) ^연산자를 사용하여 일치를 무효화할 수 있습니다. ^L*일치하지 않는 파일 이름과 일치합니다 L*. 즉, 로 시작하지 마십시오 L. 이 구문은 zsh에만 적용됩니다.

관련 정보