I'd like to know all distinct extensions of files tracked by git in a given repo, in order to create appropriate .gitattributes
file.
Example output expected:
bat
gitignore
gradle
html
jar
java
js
json
md
png
properties
py
svg
webp
xml
yml
What command can I use for that?
git ls-tree -r HEAD --name-only | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u
When you declare it as an alias, you have to escape $1
:
alias gitFileExtensions="git ls-tree -r HEAD --name-only | perl -ne 'print \$1 if m/\.([^.\/]+)$/' | sort -u"
This is better than naive find
, because:
.git
directory which contains usually hundreds/thousands of files and hence slows down the search (inspired by How can I find all of the distinct file extensions in a folder hierarchy? )
If you have access to PowerShell, here is a nice one-liner which also gives you the count of how many files exist of each type:
$ext = @{}; git ls-tree -r HEAD --name-only | Get-Item | %{ $ext[$_.Extension]++ }; $ext
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.