特定のフォルダ内のすべてのgitリポジトリを(すばやく)見つける方法

特定のフォルダ内のすべてのgitリポジトリを(すばやく)見つける方法

素朴な方法ですが、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

私はこの仕事をより速くすることを楽しみにしている。

おすすめ記事