如何递归滤波点文件出在bash使用find?

问题描述:

我已经搜查甚广,但似乎无法找到答案,这个看似简单的问题!如何递归滤波点文件出在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十岁上下的方式?)

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

这给一试:

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

我不知道这是否是你想要的,但递归列出所有子目录在bash我平时做这样的事情

ls -R | grep/

作品很多要快一些找到我尝试的选择。缺点是使用ls我最后得到了额外的冒号,但对我来说不是这样。

//编辑好吧,我试图从这里找到其他答案,他们的工作相当快......但他们是难度比LS记住。 :)