Efficient count files in directory (no recursion)

perl -e 'if(opendir D,"."){@a=readdir D;print $#a-1,"\n"}'
time perl -e 'if(opendir D,"."){@a=readdir D;print $#a - 1,"\n"}' 205413 real 0m0.497s user 0m0.220s sys 0m0.268s time { ls |wc -l; } 205413 real 0m3.776s user 0m3.340s sys 0m0.424s ********* ** EDIT: turns out this perl liner is mostly masturbation. this is slightly faster: find . -maxdepth 1 | wc -l sh-3.2$ time { find . -maxdepth 1|wc -l; } 205414 real 0m0.456s user 0m0.116s sys 0m0.328s ** EDIT: now a slightly faster perl version perl -e 'if(opendir D,"."){++$c foreach readdir D}print $c-1,"\n"' sh-3.2$ time perl -e 'if(opendir D,"."){++$c foreach readdir D}print $c-1,"\n"' 205414 real 0m0.415s user 0m0.176s sys 0m0.232s

1
2009-07-23 20:14:33

What Others Think

what if you have to recurse? I don't know how to extend the perl to recurse, but it would be interesting to compare to find . -type f | wc -l On the speed difference, I'm guessing perl has an advantage since it really doesn't deal with the filename strings like ls must. Somehow ls|wc seems to use twice as much system call time as the perl but also spends more time in userspace presumably shuttling filenames around. Any ideas?
bwoodacre · 688 weeks and 2 days ago
And if it is the filename overhead, I wonder how much faster 'ls -i | wc -l' is.
bwoodacre · 688 weeks and 2 days ago
In my home, I got the following counts: $ find . -type f | wc -l 15812 $ perl -e 'if(opendir D,"."){@a=readdir D;print $#a-1,"\n"}' 109 $ ls |wc -l 14
kzh · 688 weeks and 2 days ago
@kzh you forgot to time the results, that is what is being measured! Also, your home dir is a bad place to test because there are many hidden files/directories which find/ls ignores as well as many levels of subdirs which perl or ls do not consider, that is why your file counts vary.
bwoodacre · 688 weeks and 1 day ago
~$ time perl -e 'if(opendir D,"."){@a=readdir D;print $#a - 1,"\n"}'280 real 0m0.117s user 0m0.010s sys 0m0.000s ~$ time { ls |wc -l; } 108 real 0m0.007s user 0m0.010s sys 0m0.000s Looks like your perl line does it ~15 times slower than the ls on my machine.
tedkozma · 688 weeks and 1 day ago
@bwoodacre you could do... perl -e 'use File::Find;$c=0;find sub {++$c;},".";print $c,"\n"' but it is not faster than find . | wc -l which made me realize that find . -maxdepth 1 | wc -l ...is faster than my original oneliner :} i'm going to make an edit with this comment
recursiverse · 688 weeks and 1 day ago
@tedkozma the perl liner should be faster on larger directories. my test directory had ~200k files.
recursiverse · 688 weeks and 1 day ago
a slight modification brings perl slightly ahead again (though not by much and only for very large directories)... perl -e 'if(opendir D,"."){++$c foreach readdir D}print $c,"\n"'
recursiverse · 688 weeks and 1 day ago
ls -U1 | wc -l is much faster because it doesn't have to read in the whole directory listing into memory and sort it
hfs · 639 weeks and 2 days ago
https://seofox.ir/seo-principles/https://seofox.ir/seo-checklist/https://seofox.ir/seo/https://seofox.ir/seo-contract/https://seofox.ir/https://seofox.ir/gray-hat-seo/https://seofox.ir/robots/https://seofox.ir/link-farm-and-content-farm/https://seofox.ir/keyword-density/https://seofox.ir/search-engine/https://seofox.ir/backlink/https://seofox.ir/analyze-seo/https://seofox.ir/page-rank/https://seofox.ir/proposal/https://seofox.ir/white-hat-seo/https://seofox.ir/ugc-keyword-research/https://seofox.ir/backlink-definition/https://seofox.ir/seo-company/https://seofox.ir/googlebot/https://seofox.ir/page-speed/https://seofox.ir/broken-link/https://seofox.ir/seo-techniques/https://seofox.ir/meta-description/https://seofox.ir/ctr/https://seofox.ir/sandbox/https://seofox.ir/anchor-text/https://seofox.ir/rankbrain/https://seofox.ir/long-tail-keywords/https://seofox.ir/google-panda/https://seofox.ir/page-title/https://seofox.ir/content-marketing/https://seofox.ir/order/https://seofox.ir/redirect/https://seofox.ir/technical-seo/https://seofox.ir/on-page-seo/https://seofox.ir/seo-tools/https://seofox.ir/branding/https://seofox.ir/link-building/https://seofox.ir/off-page-seo/https://seofox.ir/seo-consultation/https://seofox.ir/on-page-seo/https://seofox.ir/local-seo/https://seofox.ir/wordpress-seo-plugin/https://seofox.ir/seo-services-prices/https://seofox.ir/google-seo-book/https://seofox.ir/start-seo/https://seofox.ir/seo-periodic-table/https://seofox.ir/content-vs-link/https://seofox.ir/social-marketing/https://seofox.ir/serpmojo/https://seofox.ir/spam-links-disavow/https://seofox.ir/google-penalty-removal/https://seofox.ir/h1/https://seofox.ir/google-penguin/https://seofox.ir/seo-articels/https://seofox.ir/what-is-google-dance/https://seofox.ir/bing/https://seofox.ir/rules-of-link-building/https://seofox.ir/seo-news/https://seofox.ir/what-is-domain-authority-and-page-authority/https://seofox.ir/template/https://seofox.ir/what-is-content-marketing/https://seofox.ir/host/https://seofox.ir/add-site-in-google/https://seofox.ir/domain-seo/https://seofox.ir/nofollow-links/https://seofox.ir/seo-portfolio/https://seofox.ir/contact-us/https://seofox.ir/faq/https://seofox.ir/privacy-policy/https://seofox.ir/terms/https://seofox.ir/about-us/https://seofox.ir/category/google-algorithms/https://seofox.ir/category/backlink/https://seofox.ir/category/blog/https://seofox.ir/category/services/https://seofox.ir/category/seo/https://seofox.ir/category/seo-content/https://seofox.ir/category/seo-resources/https://seofox.ir/category/search-engine/https://seofox.ir/seo-training/https://seofox.ir/seo-services/https://seofox.ir/faq/https://seofox.ir/contact-us/https://seofox.ir/about-us/https://seofox.ir/privacy-policy/https://seofox.ir/terms/ ????? ??? ????? ????? SEO - ????? ???? ????? ????? ????? ??? ????? ????? SEO - ????? ???? ????? ????? ????? ??? ????? ????? SEO - ????? ???? ????? ????? ????? ??? ????? ????? SEO - ????? ???? ????? ????? ????? ??? ????? ????? SEO - ????? ???? ????? ????? ????? ??? ????? ????? SEO - ????? ???? ????? ????? ????? ??? ????? ???? SEO ????? ????? ????? ???? ????? ????? ??? ???? ???? ??????? Search Engine Optimization ??? ????? ??????????? ?? ????? ?????????? ????? ????? ?? ???? ???SEO
seofox · 34 weeks and 3 days ago
Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir Seofox.ir
seofox · 33 weeks and 4 days ago
Pug Puppies for Sale Near Me pugs puppies for sale teacup pugs for sale pug puppies for sale by owner pug puppies ohio PUG PUPPY FOR SALE NEAR ME PUG PUPPIES FOR SALE pug puppies for sale in kentucky Pug Puppies for Sale Under $500 Near Me pug puppies for sale in texas pug puppies for sale $200 pugs for sale near me under $500 pugs for sale under $400 near me pugs for sale near me puppies for sale near me under $500 pug puppies for sale under $1,000 near me pug for sale pug puppies for sale under $300 Brindle Pug Pitbull Pug Mix Pugs for sale cheap Cheap pug affordable pug puppies for sale near me black pugs for sale near me White Pugs for sale pug dog for sale free pug puppies pug puppies for sale in my area mn pug breeders pug puppies indiana pugs for sale michigan PUG PUPPY ADOPTION Pug puppies for sale Pug puppies for sale near me Pug puppies near me Pug Puppies for Sale Under $500 Near Me Cute Pug Puppies Black pug puppies Black pug puppies for sale pug puppies for adoption black pug puppies for sale near me chihuahua pug mix puppies how much is a pug puppy teacup pug puppies baby pug puppies pictures of pug puppies pug puppies for sale in Ohio pug puppies price pug mix puppies teacup pug puppies for sale best food for pug puppy newborn pug puppies pug puppies craigslist pug puppies for sale craigslist adorable pug puppies how much does a pug puppy cost Pitbull pug mix puppies pug pit mix puppy pug puppies for sale $200 pug puppies for sale in NJ Pug puppies for sale in Wisconsin pug puppy cost pug puppy food royal canin pug puppy royal canin pug puppy food fawn pug puppy pug puppies for sale florida pug puppies for sale in Indiana pug puppies for sale in KY pug puppies for sale in NC pug dog puppy AKC Registered Pug Puppies For sale cheap pug puppies for sale near me cheap pug puppies for sale in California cheap pug puppies for sale in nj Black Pug Puppies for sale pugs puppies for sale pug puppies indiana Amazing! This blog looks just like my old one! It's on a completely different subject but it has pretty much the same layout and design. Wonderful choice of colors!
rahimhh21 · 4 weeks ago

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands



Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: