素朴な方法ですが、find dir1 dir2 dir3 -type d -name .git | xargs -I {} dirname {}
gitリポジトリには深いフォルダ構造が多いので、私にとっては遅すぎます(少なくともそれが理由だと思います)。prune
何かを見つけた後、findがディレクトリに繰り返されるのを防ぐために使用できるものについて読んでいましたが、2つあります。これがどのように機能するのかよくわかりません(prune
マンページを読んでいますが、それが何であるかわかりません)。 2番目はファイルフォルダfind
への再帰をブロックするため、私の場合は機能しません。.git
ただし、すべてのフォルダ内の他のフォルダに繰り返されるわけではありません。
だから私に本当に必要なのは:
すべてのサブディレクトリのフォルダが含まれていることを確認し.git
、その場合はこのファイルシステムブランチで検索を停止し、結果を報告します。検索から隠されたディレクトリも除外すれば完璧です。
ベストアンサー1
まあ、まだそれがどのように機能するのか完全にはわかりませんが、テストしてみました。
.
├── a
│ ├── .git
│ └── a
│ └── .git
└── b
└── .git
6 directories, 0 files
% find . -type d -exec test -e '{}/.git' ';' -print -prune
./a
./b
私はこの仕事をより速くすることを楽しみにしている。