저는 Linux(Ubuntu)를 사용하고 있으며 다음을 수행할 때 특정 디렉터리(예: .hg)를 제외하고 싶습니다.
find | less
목록에서 .hg 디렉토리를 제외하기 위해 다음을 시도했지만 작동하지 않는 것 같습니다.
find -type d \( ! -iname \.hg \)
find -type d \( ! -name \.hg \)
find -type d \( ! -iname .hg \)
.directory
find 명령에서 제외하는 방법
답변1
우수한유사한 find
솔루션 연구도움이 되는 설명을 찾았습니다sh에서 "find"의 "-prune" 옵션을 사용하는 방법은 무엇입니까?통과로렌스 곤살베스.
다음과 같은 것을 사용할 수 있습니다.
find . \( -type d -name .hg -prune \) -o \( -type f -name "foo" -print \)
또는 (이름 없음)
find . \( -type d -name .hg -prune \) -o \( -type f -print \)
(이스케이프 처리된) 괄호는 OR( )의 왼쪽과 오른쪽에 \(
테스트 \)
( type
및 name
)와 해당 연산( 각각 prune
및 )을 결합합니다 .print
-o
연결보다 우선순위가 낮 으므로 -o
원할 경우 괄호를 생략할 수 있습니다. 많은 find
구현에서는 마지막 -print
.
find . -type d -name .hg -prune -o -type f -name "foo" -print
답변2
구경하다 ack
:http://betterthangrep.com/
적절한 기본 제외 폴더 세트를 갖는 것 외에도(예: .hg는 기본적으로 제외됨) 새 폴더를 제외하는 것도 쉽습니다.
ack --ignore-dir=.directory search_term
파일 목록을 찾는 사용 사례로 다시 가져오려면 -f
다음과 같이 이 옵션을 사용할 수 있습니다.
ack -f --ignore-dir=.directory
복잡한 검색/찾기 명령 작성에서 간단한 ack 명령 작성으로 전환했습니다.
팁: .ackrc 파일에 일반적인 명령줄 옵션(예: 제외된 폴더)을 배치하세요.
답변3
당신은 시도 할 수 있습니다
find \( ! -regex '.*/\.directory\(\|/.*\)' \)