How to Count Files in a Directory in Linux/Ubuntu

Linux Count Files in Directory

This tutorial will show you how to count the number of files/folders in a directory on Linux, both recursively and non-recursively.

The wc Command

The wc (word count) command counts lines and words. It’s useful here as we’ll use it to count the outputted lines from various tools which list the files in a directory or directories.

The below examples will show you how to use the wc command to count files. If you want to know more about it, you can check out the full user manual by running:

man wc

Counting Files/Directories in a Directory

By combining the ls command and wc command, the number of files in a directory can be counted:

ls /path/to/directory | wc -l

The output of the ls command is piped to the input of the wc command, which then counts the number of lines present – which will be one for each file.

Include Hidden Files

To include hidden files in the count, add the -a option to the ls command:

ls -a /path/to/directory | wc -l

Counting Files/Directories Recursively

The ls command only lists the number of files in a directory – not those inside any present sub-directories.

To do this, combine the find command and wc command:

find /path/to/directory | wc -l

If you want only to count files and not directories, you can add the -type option to limit the results to files only:

find /path/to/directory -type f | wc -l

You can, of course, use any combination of options available to the find command to count only certain files.

Hidden Files and the Find Command

The find command will include hidden files by default; they can be excluded with this neat bit of regex and the -not -path options:

find /path/to/directory  -not -path '*/\.*' | wc -l

This will exclude any files starting with ‘.’ (period character) – which on Linux denotes a hidden file.

SHARE:
nv-author-image

Brad Morton

I'm Brad, and I'm nearing 20 years of experience with Linux. I've worked in just about every IT role there is before taking the leap into software development. Currently, I'm building desktop and web-based solutions with NodeJS and PHP hosted on Linux infrastructure. Visit my blog or find me on Twitter to see what I'm up to.

Leave a Reply

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