How to Count Files in a Directory in Linux (Quickly)

number of files, linux, ubuntu, red hat

Ever needed to count files in a directory but didn’t know the best way to do it? Whether you’re trying to manage disk space, verify backups, or just get a quick overview of your files, Linux gives you plenty of ways to get the job done.

Some methods are super quick, while others work better when dealing with large directories or specific file types. In this guide, we’ll go through the best ways to count files in Linux, whether you want a simple count or something more advanced.

This HOW-TO guide was Written by Sood, a Linux expert with over 15 years of experience in system administration, automation, and cloud computing.

Using ls to Count Files in a Directory

The ls command is the most straightforward way to check how many files are in a directory. It’s great when you just need a quick number and aren’t dealing with complex folder structures.

To count files in the current directory, run:

ls | wc -l

If you want to include hidden files (the ones that start with a dot), use:

ls -A | wc -l

While this method is fast and easy, it has a few drawbacks. It doesn’t count subdirectories, and if a file has a strange name (like one with a newline character), the result might not be accurate.

This is a solid choice when working in small folders but not the best for large-scale operations.

Counting Files in a Directory with find (Best for Large Directories)

If you’re dealing with thousands or millions of files, find is a better option. It scans everything, including subdirectories, giving you a more accurate file count.

To count all files (including those in subdirectories):

find . -type f | wc -l

Want to count only a specific type of file, like .txt? Use:

find . -type f -name "*.txt" | wc -l

If you just need a count for the current directory (no subdirectories), run:

find . -maxdepth 1 -type f | wc -l

Unlike ls, the find command gives precise numbers, but it can be slow in massive directories. If performance is a concern, there are some faster options.

The Fastest Way to Count Files in a Directory with stat

If you want speed, stat is your best friend. This command is designed to quickly grab file and directory details without scanning each file individually.

Run:

stat -c %h .

This method is blazing fast but only works for simple counts. It doesn’t differentiate between files and directories, so it may not always give the number you expect.

Counting Files and Folders with tree

If you like visual representations, tree is a great tool. It not only shows a directory structure but also provides a count of files and folders.

Before using it, make sure it’s installed:

Ubuntu/Debian:

sudo apt install tree

CentOS/RHEL:

sudo yum install tree

Once installed, just run:

tree

At the bottom, you’ll see a summary of how many files and directories are in your folder. It’s not the fastest method, but it’s great when you want a clear view of your files.

Automating File Counting with a Bash Script

If you frequently need to count files in a directory, why not automate it? A simple Bash script can do the work for you.

First, create a script and add this:

#!/bin/bash
DIR=$1
if [ -d "$DIR" ]; then
    COUNT=$(find "$DIR" -type f | wc -l)
    echo "Number of files in $DIR: $COUNT"
else
    echo "Directory not found: $DIR"
fi

Save it as count_files.sh.

Make the script executable:

chmod +x count_files.sh

Execute the script with the following command, substituting the placeholder with your own folder path:

./count_files.sh /path/to/directory

Want to run it automatically every day? Use cron:

0 0 * * * /path/to/count_files.sh /home/user >> /home/user/log.txt

This will log the file count to a specified file for tracking and analysis. Now, your Linux system will count files for you without lifting a finger.

FAQs

How do I count only visible files in a Linux directory?

Use ls | wc -l to count only visible files. This command lists files and pipes the output to wc -l, which counts the lines.

Can I count files of a specific type across all subdirectories?

Yes, the command find . -type f -name "*.extension" | wc -l enables you to count files of a specific type across all subdirectories.

Is there a way to count files without including subdirectories?

Absolutely, by using find . -maxdepth 1 -type f | wc -l, you can count files in the current directory without descending into subdirectories.

How can hidden files be included in the file count?

Include hidden files by using ls -a | wc -l for a basic count, or find . -type f | wc -l to count all files, including hidden ones, across directories and subdirectories.

Is there a way to count only a specific file type?

Yes! Use find . -type f -name "*.log" | wc -l (replace .log with your desired file type).

What is the most efficient way to count millions of files?

Using find is the most accurate, but for faster results on large file sets, try ls | wc -l or stat.”

Final Thoughts

Whether you need a quick file count or an accurate recursive search, Linux gives you plenty of options.

  • ls works well for small directories.
  • find is the best choice for large directories.
  • stat is the fastest method for quick estimates.
  • tree gives a visual overview.
  • A Bash script can automate everything.

Try out these methods and find the one that works best for your needs!

Photo of author
As Editor in Chief of HeatWare.net, Sood draws on over 20 years in Software Engineering to offer helpful tutorials and tips for MySQL, PostgreSQL, PHP, and everyday OS issues. Backed by hands-on work and real code examples, Sood breaks down Windows, macOS, and Linux so both beginners and power-users can learn valuable insights. For questions or feedback, he can be reached at sood@heatware.net.