191

I want to find the total count of the number of files under a folder and all its sub folders.

9 Answers 9

285

May be something like

find . -type f | wc -l

would do the trick. Try the command from the parent folder.

find . -name <pattern> -type f finds all files in . and subfolders. The result (a list of files found) is passed (|) to wc -l which counts the number of lines. -name <pattern> only looks for certain files.

6
  • 3
    The solution will fail on files which names contain a newline. Apr 8, 2011 at 14:23
  • 2
    @user unknown: find . -type f -ls | wc -l
    – arrange
    Nov 22, 2013 at 21:24
  • 2
    even faster: find . -type f -print0 | tr -d -c '\0' | wc -c
    – arrange
    Nov 22, 2013 at 21:44
  • 17
    @arrange: even faster: find . -type f -printf . | wc -c - I adopt the print for my solution instead of my -exec echo . Nov 23, 2013 at 3:41
  • 1
    Be aware that this also counts hidden files starting with a dot. I consider this a feature rather than a bug, but it is good to know.
    – cgogolin
    Jan 17, 2016 at 13:13
31

Use the tree command. You might need to install the tree package.

It will list all the files and folders under the given folder and list a summary at the end.

22

To count files (even files without an extension) at the root of the current directory, use:

ls -l | grep ^- | wc -l

To count files (even files without an extension) recursively from the root of the current directory, use:

ls -lR | grep ^- | wc -l
4
  • 2
    Those will not count hidden files. Apr 20, 2019 at 2:42
  • True. I'm more inclined to accept and use your answer as the solution.
    – user38537
    Apr 23, 2019 at 18:17
  • Actually, not counting hidden files / files in hidden directories is an useful feature while working inside a subversion or git repository!
    – lfurini
    Apr 8, 2020 at 13:00
  • And this is very slow on large folders because ls -l will sort the output.
    – Dr_Zaszuś
    Jul 12, 2020 at 7:25
18

The fastest and easiest way, is to use tree. Its speed is limited by your output terminal, so if you pipe the result to tail -1, you'll get immediate result. You can also control to what directory level you like the results, using the -L option. For colorized output, use -C. For example:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

If it's not already there, you can get it here.

11
find -type f -printf . | wc -c

Don't count the output lines of find, because filenames, containing 99 newlines, will count as 100 files.

3
  • 4
    Filenames containing new lines is an incredibly rare edge case. Jul 22, 2013 at 13:49
  • 8
    @DisgruntledGoat: So an error will be extremely hard to find. Jul 23, 2013 at 2:41
  • I like a good edge case, especially many years later.
    – user38537
    Apr 20, 2019 at 2:16
5

Use this command for each folder in the path

for D in *; do echo $D; find $D -type f| wc -l; done
2

You can use find . | wc -l

find . will list all files and folders and theire contents starting in your current folder.
wc -l counts the results of find

2
  • This solution counts also the folders, I gave the mark cause it matched my occasion that I didnt want to count them in :)
    – topless
    Apr 8, 2011 at 12:12
  • The solution will fail on files which names contain a newline. Apr 8, 2011 at 14:23
1

find seems to be quicker than tree so I used below to count files in each directory of the current working directory (ignoring files in CWD) with allowing directories to have spaces:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

2
  • Parsing output of ls is very bad idea.
    – sourav c.
    Jul 21, 2016 at 14:49
  • Great code, how can I arrange the output lines say in an increasing or decreasing count of files Nov 19, 2017 at 10:08
0

I'd go with this option myself:

ls -alR | grep -c ^-

1
  • 4
    Please add some details ... May 29, 2016 at 7:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.