cloc – Count Lines of Code in Many Programming Languages

Posted on

While working on different projects, sometimes you might be required to provide a report or statistics of your progress, or simply to calculate the value of your code.

There is this simple yet powerful tool called “cloc – count lines of code” that allows you to count all number of your code and exclude comments and blank lines at the same time.

It is available in all major Linux distributions and supports multiple programming languages and file extensions and does not have any specific requirements to be used.

In this tutorial you are going to learn how to install and use cloc on your Linux system.

How to Install and Use Cloc in Linux Systems

Installing cloc is easy and simple. Below you can see how to install cloc in different operating systems with their related package managers:

$ sudo apt install cloc                  # Debian, Ubuntu
$ sudo yum install cloc                  # Red Hat, Fedora
$ sudo dnf install cloc                  # Fedora 22 or later
$ sudo pacman -S cloc                    # Arch
$ sudo emerge -av dev-util/cloc          # Gentoo
$ sudo apk add cloc                      # Alpine Linux
$ sudo pkg install cloc                  # FreeBSD
$ sudo port install cloc                 # Mac OS X with MacPorts
$ brew install cloc                      # Mac OS X with Homebrew
$ npm install -g cloc                    #

Cloc can be used to count lines in particular file or in multiple files within directory. To use cloc simply type cloc followed by the file or directory which you wish to examine.

Here is an example from a file in bash. The file in question contains the following code in bash:

$ cat
cloc – Count Lines of Code in Many Programming Languages

Linux Bash Script

Now lets run cloc on it.

$ cloc
cloc – Count Lines of Code in Many Programming Languages

Count Lines in File

As you can see it counted the number of files, blank lines, comments and lines of code.

Another cool feature of cloc is that can even be used on compressed files. For example, I have downloaded the latest WordPress archive and ran cloc on it.

$ cloc latest.tar.gz

Here is the result:

cloc – Count Lines of Code in Many Programming Languages

Count Lines on Compressed File

You can see that it recognizes the different types of code and separates the stats per language.

In case you need to get a report for multiple files in a directory you can use “--by-file” option, that will count the lines in each file and provide a report for them. This may take a while for projects with many files and thousands of lines of code.

The syntax is as follows:

$ cloc --by-file <directory>
cloc &#8211; Count Lines of Code in Many Programming Languages

Count Lines on Multiple Files

While the help of cloc is easily readable and understandable, I will include some of the extra options that can be used with cloc some users may find useful.

  • --diff <set1> <set2> – computes the differences in code between the source files of set1 and set2. The input can be a mix of files and directories.
  • --git – forces the inputs to be recognized as git targets if the same are not first identified as file or directory names.
  • --ignore-whitespace – ignores the horizontal whitespace when comparing files with --diff.
  • --max-file-size=<MB> – if you want to skip files larger than the given amount MB.
  • --exclude-dir=<dir1>,<dir2> – exclude given comma separated directories.
  • --exclude-ext=<ext1>,<ext2> – exclude the given file extensions.
  • --csv – export results to CSV file format.
  • --csv-delimiter=<C> – use the character <C> as the delimiter.
  • --out=<file> – save the results to <file>.
  • --quiet – suppress all information messages and show only the final report.
  • --sql=<file> – write the results as create and insert statements that can be read by a database program such as SQLite.

Cloc is a little useful utility that is definitely good to have in your arsenal. While it may not be used on a daily basis, it can help you when you have to generate some report or if you are just curious how is your project going.


Leave a Reply

Your email address will not be published. Required fields are marked *