2011-02-06 4 views
1

나는 멀리서 검색했지만이 겉으로보기에는 간단한 질문에 대한 답을 찾지 못했습니다!bash에서 find를 사용하여 도트 파일을 재귀 적으로 필터링하는 방법은 무엇입니까?

일부 도트 파일을 포함하는 디렉토리가 있습니다 (그들은 .git 일 수 있지만 쉽게 .svn 일 수 있고 어쩌면 다른 것일 수도 있음). 일부는 점들이 아닌 파일입니다. 이 디렉토리의 모든 하위 디렉토리를 나열하는 일반적인 함수를 찾고 있는데 을 제외하고은 마침표로 시작하는 숫자가 . 인 것입니다.

나는 find . -type d의 변종이라고 생각하지만, 몇 가지 주문을 시도해 보았습니다.

뭔가

def find_files(listing, dir): 
    for entry in listdir(dir): 
     if isdir(entry) and does_not_begin_with_dot(entry): 
      listing.append(entry) 
      find_files(listing, entry) 

처럼 (깜짝 아무도이 물었다 것 - 어쩌면 내가 보이지 않아요 더 배쉬 틱 방법이?)

답변

4
find . -type d | grep -v '/\.' 

... 또는 이 당신이 원하는,하지만 반복적으로 나는 보통 훨씬 빨리 어떤 것보다

ls -R | grep/

같은 작품을 해봤 옵션을 찾을 배쉬의 모든 서브 디렉토리를 나열하는 경우

find . -type d -a ! -name '.?*' -o -name '.?*' -a ! -prune 
+0

실종'find -type d -a! -name '.? *'-o! -prune'도 마찬가지입니까? –

2

이 시도 보내기

find . -mindepth 1 -name '.*' -prune -o \(-type d -print \) 
0

나는 확실하지 않다. 단점은 ls를 사용하면 마지막에 여분의 콜론이 생기는 것입니다. 그러나 그것은 저에게는 그다지 중요하지 않습니다.

// 편집 좋아, 내가 여기에서 다른 답변을 시도하고 그들은 매우 빠르게 작동하지만 ... 그들은 나보다 더 기억하고 있습니다. :)

관련 문제