How can I find and count number of files matching a given string?

Katherine Rix picture Katherine Rix · Feb 22, 2012 · Viewed 8.1k times · Source

I want to find and count all the files on my system that begin with some string, say "foo", using only one line in bash.

I'm new to bash so I'd like to avoid scripting if possible - how can I do this using only simple bash commands and maybe piping in just one line?

So far I've been using find / -name foo*. This returns the list of files, but I don't know what to add to actually count the files.

Answer

Adam Liss picture Adam Liss · Feb 22, 2012

You can use

find / -type f -name 'foo*' | wc -l
  • Use the single-quotes to prevent the shell from expanding the asterisk.
  • Use -type f to include only files (not links or directories).
  • wc -l means "word count, lines only." Since find will list one file per line, this returns the number of files it found.