제외 디렉토리 찾기


13

Linux (Ubuntu)를 사용 중이며 특정 디렉토리 (예 : .hg)를 제외하고 싶습니다.

find | less  

.hg 디렉토리를 목록에서 제외하기 위해 다음을 시도했지만 작동하지 않는 것 같습니다.

find -type d \( ! -iname \.hg \)
find -type d \( ! -name \.hg \)
find -type d \( ! -iname .hg \)

.directory찾기 명령에서 제외하는 방법

답변:


14

상의 유사한 연구 find솔루션 난에 도움이 설명 발견 쉬에서 '찾기'의 '-prune'옵션을 사용하는 방법을? Laurence Gonsalves에 의해 .

다음과 같은 것을 사용할 수 있습니다.

find . \( -type d -name .hg -prune \) -o \( -type f -name "foo" -print \)

또는 (이름없이)

find . \( -type d -name .hg -prune \) -o \( -type f -print \)

제 (이스케이프) 호 \(\)기 시험 ( typename)와 대응 조치 ( pruneprint각각) 함께 좌우의 OR ( -o).

-o병치보다 우선 순위가 낮 으므로 원하는 경우 괄호를 생략 할 수 있습니다. find또한 많은 구현에서 최종 단계를 건너 뛸 수 있습니다 -print.

find . -type d -name .hg -prune -o -type f -name "foo" -print

1
내 솔루션을 쓰려고했지만 정확히이 것 같습니다. 개인적으로 나는 -prune첫 번째 대괄호 세트 안에 두 번째 대괄호를 넣고 두 번째 세트에 넣어서 -type f -print및 / 또는 작업을보다 명확하게 만들었습니다.
me_and

@me_and의 의견 덕분에 괄호 (및 추론)가 향상되었습니다.
fheub

2

살펴보기 ack: http://betterthangrep.com/

합리적인 기본 제외 폴더 세트 (예 : .hg는 기본 제외) 외에 새 폴더를 쉽게 제외 할 수 있습니다.

ack --ignore-dir=.directory search_term

파일 목록을 찾고있는 유스 케이스로 다시 가져 오려면 다음 -f과 같이 옵션을 사용하십시오 .

ack -f --ignore-dir=.directory

복잡한 검색 / 찾기 명령 작성에서 간단한 ack 명령으로 전환했습니다.

팁 : 일반적으로 사용되는 명령 줄 옵션 (예 : 폴더 제외)을 .ackrc 파일에 넣으십시오.


에 기초 find | less질문에, 영업 이익은 파일의 간단한 목록을 찾고 있습니다. 이것이 어떻게 도움이 되나요?
CVn

@ MichaelKjörling 내 대답에서 언급했듯이 -f 옵션은 파일 목록을 제공합니다.
Brian Leathem

-2

당신은 시도 할 수 있습니다

find \( ! -regex '.*/\.directory\(\|/.*\)' \)

이것은 OP가 요청한 것과 같은 것이 아니라는 것을 확신합니다.
me_and

방금 이것이 이것이 의미하는 .directory
바라고
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.