cloc – Count Lines of Code in Many Programming Languages

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 https://packages.gentoo.org/packages/dev-util/cloc
$ 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                    # https://www.npmjs.com/package/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 bash_script.sh
Linux Bash Script
Linux Bash Script

Now lets run cloc on it.

$ cloc bash_script.sh
Count Lines in File
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:

Count Lines on Compressed File
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>
Count Lines on Multiple Files
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.
Conclusion

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.

Marin Todorov
I am a bachelor in computer science and a Linux Foundation Certified System Administrator. Currently working as a Senior Technical support in the hosting industry. In my free time I like testing new software and inline skating.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

2 Comments

Leave a Reply
  1. There is a new tool out, Loci. https://www.npmjs.com/package/@0b1.org/loci

    Written entirely in nodejs, it produces similar results to Cloc, but in less time. It doesn’t have some of the value-added features, like Diff or in-archive scanning.

    It is useful in a tightly controlled network where you can’t run an executable (like cloc.exe) or have access to Perl scripts (cloc.pl) but have nodejs.

    Reply
  2. So interesting article, I am a bank`s specialist system area, and we are searching for a tool to improve our numbers.

    thanks

    Reply

Leave a Reply to 0b1 Cancel reply

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.