Наивный подход есть find dir1 dir2 dir3 -type d -name .git | xargs -I {} dirname {}
, но он слишком медленный для меня, потому что у меня много глубоких структур папок внутри git-репозиториев (по крайней мере, я думаю, что это причина). Я читал о том, что могу использовать, prune
чтобы предотвратить поиск в каталогах, как только он что-то найдет, но есть две вещи. Я не уверен, как это работает (я имею в виду, я не понимаю, что prune
делает, хотя я прочитал man-страницу), и во-вторых, это не сработает в моем случае, потому что это помешает find
вернуться в .git
папку, но не во все другие папки.
Так что мне действительно нужно:
для всех подкаталогов проверьте, содержат ли они .git
папку, а затем остановите поиск в этой ветви файловой системы и сообщите результат. Было бы идеально, если бы это также исключало любые скрытые каталоги из поиска.
getpof .git
это то, что я использую. github.com/thrig/scripts/blob/master/filesys/getpof.c