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
전달해야 합니다 .-d
ls -d L*
이름이 다음 문자로 시작하지 않는 파일을 일치시키려면 L
다음을 사용할 수 있습니다.글로벌 모드 [^L]
[!L]
( 다른 쉘과 호환되도록 작성할 수도 있습니다 ). [^L]
Except 를 제외한 모든 문자와 일치하므로 L
, [^L]*
Except 를 제외한 모든 문자로 시작하는 파일 이름과 일치합니다 L
. 파일 이름은 비워둘 수 없으므로 [^L]*
정확한 일치는 L
.
또는 extended_glob
옵션이 설정된 경우(대부분의 사용자가 에 입력 .zshrc
) ^
연산자를 사용하여 일치를 무효화할 수 있습니다. ^L*
일치하지 않는 파일 이름과 일치합니다 L*
. 즉, 로 시작하지 마십시오 L
. 이 구문은 zsh에만 적용됩니다.