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

标签 git bash grep gitattributes

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

预期输出示例:

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

我可以使用什么命令?

最佳答案

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?)

关于git - 如何列出 git 存储库中跟踪文件的所有不同扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34088711/

相关文章:

bash - 如何使用 bash 对目录中的每个文件执行某些操作?

awk - 容忍子集 .fastq 不匹配的 Grep

linux - 如何对文件中的每一行运行 grep 命令?

unix - 计算文件中的空白行数

linux - Git 符号链接(symbolic link) - Windows 工作站 - Linux 服务器

git - 什么是 merge 请求?

linux - 在linux中回显路径有什么作用?

linux - 如何在 Linux 上创建支持替换/删除文件的存档?

windows - 如何删除相互矛盾的重复 Git 配置值?

git - Jenkins Git 插件是否有将 merge-strategy 选项设置为 'theirs' 的方法?