(General Question) how to count how many files in a directory tree

Joe(theWordy)Philbrook jtwdyp at ttlc.net
Mon May 17 04:06:06 UTC 2004


It would appear that on May 16, Rod Haper did say:

> If you want to count only files in the current directory and all 
> subdirectories, try this:
> 
> find . -type f -print | wc -l
> 
> Btw, the method you used in your email above skips dot (.*) files and 
> includes directories, links, fifos, etc.  If you don't care about that, 
> just add the -R or --recursive switch to your ls command.

Just a couple quick points, "ls -1R" seams to add a line with ".:" at
the beginning and a blank line between each directory listing, that
would have to be filtered out. 

A quick empirical test of your find command includes  any extra "HARD"
links to the same file.  (don't know about "fifo's etc")

Another alternative that does include directories, (.*) files, and "SOFT"
links but skips additional "HARD" links is based on the disk usage
command:

du -a | wc -l

It also adds a single total line, but that predictable quantity can be
easily compensated for:

expr `du -a | wc -l` - 1

(Note for those with tired eyes: those are back quotes NOT single quotes)

Or if you didn't want the directories:

expr `du -a | wc -l` - `du |wc -l`

(the two total lines cancel each others line count out...)

There seams to be more than one way to do most things in *nix
environments.  Often with similar but not quite the same results.
Which one you use would depend on what parts of the result you care
about. ;) 

-- 
|   ---   ___
|   <0>   <->	   Joe (theWordy) Philbrook
|	^		J(tWdy)P
|    ~\___/~	     <<jtwdyp at ttlc.net>>

But if I actually knew everything, then I'd know I was an idiot...





More information about the fedora-list mailing list