Как перечислить все отдельные расширения отслеживаемых файлов в репозитории git?

Я хочу знать все расширения файлов, отслеживаемых git в заданном репо, для создания соответствующего файла .gitattributes.

Какую команду я могу использовать для этого?

Ответ 1

git ls-tree -r HEAD --name-only | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u 

Когда вы объявляете его как псевдоним, вам нужно выйти $1:

alias gitFileExtensions="git ls-tree -r HEAD --name-only | perl -ne 'print \$1 if m/\.([^.\/]+)$/' | sort -u"

Это лучше наивного find, потому что:

  • исключает неиспользуемые (gitignored) файлы
  • он исключает каталог .git, который содержит обычно сотни/тысячи файлов и, следовательно, замедляет поиск

(вдохновленный Как я могу найти все отдельные расширения файлов в иерархии папок?)