如何列出git存储库中跟踪文件的所有不同扩展名?

时间:2015-12-04 12:42:46

标签: git bash grep gitattributes

我想知道给定仓库中git跟踪的文件的所有不同扩展名,以便创建适当的.gitattributes文件。

预期的输出示例:

bat
gitignore
gradle
html
jar
java
js
json
md
png
properties
py
svg
webp
xml
yml

我可以使用什么命令?

1 个答案:

答案 0 :(得分:4)

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目录,其中通常包含数百/数千个文件,从而减慢了搜索速度

(灵感来自How can I find all of the distinct file extensions in a folder hierarchy?