我搜索的范围很广,但似乎无法找到这个看似简单问题的答案!
我有一个包含一些dotfiles的目录(它们恰好是.git
,但很容易就是.svn
,甚至可能是其他东西)和一些非dotfiles。我正在搜索一个通用函数,它将列出此目录的所有子目录,除了以句点.
开头的那些子目录。
我认为这是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)
(很惊讶没有人问过这个问题 - 也许还有一种我没有看到的更糟糕的方式?)
答案 0 :(得分:4)
find . -type d | grep -v '/\.'
的 ...或... 强> 的
find . -type d -a ! -name '.?*' -o -name '.?*' -a ! -prune
答案 1 :(得分:2)
尝试一下:
find . -mindepth 1 -name '.*' -prune -o \( -type d -print \)
答案 2 :(得分:0)
我不确定这是否是您想要的,但是以递归方式列出bash中的所有子目录我通常会做类似的事情
ls -R | grep /
比我尝试的一些找到的选项快得多。缺点是使用ls我最后会得到额外的冒号,但对我来说情况并非如此。
//编辑好的,我尝试了其他人从这里找到答案,他们工作得很快......但是他们比ls更难记住。 :)