2011-02-06 49 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) 

(驚訝沒人問過這個 - 也許有,我不是看到更多的bash十歲上下的方式?)

回答

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

...或...

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

慣於`找到型d -a! -name'。?*'-o! -prune`也可以嗎? – 2013-12-25 03:36:51

2

這給一試:

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

我不知道這是否是你想要的,但遞歸列出所有子目錄在bash我平時做這樣的事情

ls -R | grep/

作品很多要快一些找到我嘗試的選擇。缺點是使用ls我最後得到了額外的冒號,但對我來說不是這樣。

//編輯好吧,我試圖從這裏找到其他答案,他們的工作相當快......但他們是難度比LS記住。 :)