How to get a count of all the files in a git repository?

How would you get a count of all the files currently in a git repository?


Solution 1:

You can get a count of all tracked files in a git respository by using the following command:

git ls-files | wc -l

Command Breakdown:

  • The git ls-files command by itself prints out a list of all the tracked files in the repository, one per line.
  • The | operator funnels the output from the preceding command into the command following the pipe.
  • The wc -l command calls the word count (wc) program. Passing the -l flag asks it to return the total number of lines.

Note: This returns a count of only the tracked files in the repository meaning that any ignored files or new & uncommitted files will not be counted.

Solution 2:

If you came here looking for a way to do this for a repo hosted on github without cloning it, you can do this:

svn ls -R https://github.com/exampleproject/branches/master | wc -l

Solution 3:

Just to build on the accepted answer, you can also filter which types of files you want to count.

Count only .json files

# Will output only json file paths
git ls-files "./*.json" | wc -l

Count only .c files

git ls-files "./*.c" | wc -l

A fairly useful way to gauge what languages are common in a repo...

Solution 4:

This is a solution for Windows using PowerShell

git ls-files | %{ Get-Content -Path $_ } | measure