목록에 없는 디렉토리를 찾아야 합니다.
다음 디렉터리가 있다고 가정해 보겠습니다.
opt
cmd
XX
위의 3개를 제외한 모든 디렉터리를 가져와야 합니다.
답변1
그리고 find
:
find /path -maxdepth 1 -not \( -name "opt" -or -name "cmd" -or -name "XX" \)
-maxdepth 1
하위 디렉터리로 내려가는 일이 없습니다.-not \( ... \)
대괄호 안의 모든 내용을 무효화합니다.-name ... -or -name ...
: 제외하려는 이름은 다음과 관련이 있습니다.-or
또 다른 접근 방식은 find 를 사용하는 것입니다 -regex
. 여기서 제외된 모든 디렉터리를 패턴에 넣을 수 있습니다.
find /path -maxdepth 1 -not -regex ".*/opt\|.*/cmd\|.*/XX"
답변2
사용중인 쉘에 따라 다음을 시도해 볼 수 있습니다 bash
.
shopt -s extglob
ls -ld /!(opt|mnt|XX)
/
이러한 디렉터리는 루트( ) 디렉터리에 있다고 가정합니다 . 그렇지 않으면 /
문자가 생략됩니다.