Thanks for all the help guys, I really appreciate it. I have gotten the script to work almost entirely except for one problem; it seems to be interpreting the . at the beginning of each extension as any character. This results in an extension like .h finding all files that end with h. I believe the solution is to use glob pattern matching but I am unsure how to incorporate that into my find statements. Here is my updated (and better indented) code:
#!/usr/bin/perl use warnings; use File::Find; sub countThem { $dir = '.'; $filecount=0; $ext1=$_[2]; find(sub{$filecount++ if $File::Find::name =~ /$ext1$/}, $dir); $filebytes=0; if ($filecount > 0 ){ #`find . -name "*$_[2]" -print`; my @f; find ( sub { return unless /$ext1$/; push @f, $File::Find::name; },$dir); chomp(@f); foreach $a (@f){ $fbytes=`cat $a | wc -c`; $filebytes=$filebytes+$fbytes; }} $_[0]=$filecount; $_[1]=$filebytes; } foreach $ext (@ARGV){ $tmpfilecount=0; $tmpfilebytes=0; countThem ($tmpfilecount, $tmpfilebytes, $ext); if ( $tmpfilecount > 0 ){ print STDOUT ("EXTENSION $ext, FILE COUNT: $tmpfilecount, FILE + CHARS: $\ tmpfilebytes\n"); } }
any ideas?
In reply to Help needed with Perl script designed to find files by extension and count the number of chars by Griegomas
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |