Как перечислить все различные расширения отслеживаемых файлов в репозитории git?
Я хотел бы знать все различные расширения файлов, отслеживаемых Git в данном репо, чтобы создать соответствующие .gitattributes
файл.
Ожидаемый пример вывода:
bat
gitignore
gradle
html
jar
java
js
json
md
png
properties
py
svg
webp
xml
yml
Какую команду я могу использовать для этого?
2 ответа
Решение
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
каталог, который обычно содержит сотни / тысячи файлов и, следовательно, замедляет поиск
(вдохновленный Как я могу найти все различные расширения файлов в иерархии папок?)
Если у вас есть доступ к PowerShell, вот хороший однострочный код, который также дает вам подсчет количества существующих файлов каждого типа:
$ext = @{}; git ls-tree -r HEAD --name-only | Get-Item | %{ $ext[$_.Extension]++ }; $ext