How to count all the lines of code in a directory recursively?


Question

We've got a PHP application and want to count all the lines of code under a specific directory and its subdirectories. We don't need to ignore comments, as we're just trying to get a rough idea.

wc -l *.php 

That command works great within a given directory, but ignores subdirectories. I was thinking this might work, but it is returning 74, which is definitely not the case...

find . -name '*.php' | wc -l

What's the correct syntax to feed in all the files?

1
1484
11/9/2012 1:26:51 AM

Accepted Answer

Try:

find . -name '*.php' | xargs wc -l

The SLOCCount tool may help as well.

It'll give an accurate source lines of code count for whatever hierarchy you point it at, as well as some additional stats.

Sorted output: find . -name '*.php' | xargs wc -l | sort

2467
5/17/2019 5:34:30 PM

For another one-liner:

( find ./ -name '*.php' -print0 | xargs -0 cat ) | wc -l

works on names with spaces, only outputs one number.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon