5

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

预期输出示例:

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

我可以使用什么命令?

4

1 回答 1

5
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"

这比 naive 好find,因为:

  • 它不包括未跟踪的(gitignored)文件
  • 它排除.git了通常包含数百/数千个文件的目录,因此会减慢搜索速度

(灵感来自如何在文件夹层次结构中找到所有不同的文件扩展名?

于 2015-12-04T12:42:45.747 回答