물결표("~")로 시작하지 않는 폴더를 찾는 방법

물결표("~")로 시작하지 않는 폴더를 찾는 방법

물결표("~")로 시작하는 폴더를 제외하고 폴더를 찾으려고 합니다. 다음을 시도했지만 결과가 없습니다. find물결표가 와일드카드 문자로 해석되는 것 같습니다 .

find . -type d -not -path '*/\~*'
find . -type d -not -path '*/~*'
find . -type d -not -regex '.*/~.*'
find . -type d -not -regex '.*/\~.*'

내 버전의 find는 find (GNU findutils) 4.6.0.

답변1

./path/to/~dir폴더를 건너뛰되 건너뛰지 않으 ./path/to/~dir/subdir려면 다른 사람들이 이미 말했듯이 다음을 수행할 수 있습니다.

find . ! -name '~*' -type d -print

당신이 원하지 않는다면감소이러한 폴더에 들어가려면(더 많은 폴더를 찾으려면) 다음을 수행합니다.

find . -name '~*' -prune -o -type d -print

이는 find이름으로 시작하는 디렉토리에 루트가 있는 분기를 제거하라는 의미입니다 ~.

이는 기본적으로 귀하의 것과 기능적으로 동일해야 합니다.

find . -type d ! -path '*/~*'

단지 후자는 정리하지 않기 때문에 디렉토리를 인쇄하지 않더라도 여전히 해당 디렉토리를 살펴보므로 효율성이 떨어집니다.


¹ 몇 가지 차이점이 있습니다. 즉, 첫 번째 이름은 잘못된 문자가 포함된 파일 이름과 일치하지 않을 *수 있습니다 .*/~*

답변2

-name표현식이 테스트하는 내용을 지정하려면 이 옵션을 사용해야 합니다 . 다음은 나에게 효과적이었습니다.

find . -type d ! -name '~*'

답변3

이름 테스트는 괜찮을 것입니다:

find . -type d ! -name '~*'

관련 정보