1

我进行了广泛搜索,但似乎无法找到这个看似简单问题的答案!

我有一个目录,其中包含一些点文件(它们碰巧是,.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

3 回答 3

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

...或者...

find . -type d -a ! -name '.?*' -o -name '.?*' -a ! -prune
于 2011-02-06T22:37:17.617 回答
2

试试这个:

find . -mindepth 1 -name '.*' -prune -o \( -type d -print \)
于 2011-02-06T22:36:21.027 回答
0

我不确定这是否是您想要的,但是要递归列出 bash 中的所有子目录,我通常会执行类似的操作

ls -R | grep /

比我尝试过的一些查找选项要快得多。缺点是使用 ls 我最后会得到额外的冒号,但对我来说不是这样。

//edit 好的,我尝试了其他从这里找到的答案,它们的工作速度非常快......但它们比 ls 更难记住。:)

于 2011-02-06T22:53:50.343 回答