2011-02-06 3 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 '/\.' 

...またはこれが何をしたいですが、再帰的に私は通常はるかに高速いくつかのより

ls -R | grep/

ような何か作品をやる私が試したオプションを見つけるbashですべてのサブディレクトリを一覧表示する場合

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を使用すると最後にコロンが追加されますが、それは私には当てはまりません。

//編集OKですが、私はここから答えを見つけようとしましたが、彼らはかなり速く働いています...しかし、彼らは私よりも覚えにくいです。 :)

関連する問題