du -dirs

Eric Thelin eric@thelin.org
Fri, 23 Jun 2000 17:57:22 -0700 (MST)


Ah, but the shell script will count the files in the whole tree from the
starting directory down.  But the perl version will only count files in
the directory itself.  So for most uses the shell script is better.  So
newbies would be better off using the shell script.  Of course this
leaves a challenge for the perl hackers to fix\b\b\bimprove the perl
version.  OK, so I am writing this because I want the perl script to be
as good as the shell one but I am too lazy to do it myself :)

Eric

On Thu, 22 Jun 2000, Kevin Buettner wrote:

> On Jun 22,  1:29am, Kevin Buettner wrote:
> 
> > Below another way to do it that doesn't use perl.
> [...]
> > find $1 -type f -not -type l -printf '%s\n' | awk -- '{s += $0} END {print s}'
> 
> Okay, I'm wasting way too much time on this, but I couldn't very well
> submit a twenty-three line perl solution and what amounts to find+awk
> one liner and leave it at that.  Newbies out there might get the wrong
> idea and start writing shell scripts instead of perl scripts!
> 
> So here's another shell script which is very similar to fsizes.sh, but
> uses a perl one-liner to do the job of both find and awk in that other
> script.
> 
> --- fsizes2.sh ---
> #!/bin/sh
> 
> if [ -z "$1" ]; then
>     echo "usage $0 root-dir"
>     exit 1
> fi
> 
> perl -MFile::Find -e 'find sub {$s += -s if -f && !-l}, @ARGV; print "$s\n"' $1
> --- end fsizes2.sh ---
> 
> And here's the equivalent code in pure perl...
> 
> --- fsizes2.pl ---
> #!/usr/bin/perl -w
> 
> use File::Find;
> 
> die "Usage $0 root-dir\n" unless defined $ARGV[0];
> 
> find sub { $s += -s if (-f && !-l)}, $ARGV[0];
> print "$s\n";
> --- end fsizes2.pl ---
> 
> I'd be curious to see what a Python solution looks like.
> 
> _______________________________________________
> Plug-discuss mailing list  -  Plug-discuss@lists.PLUG.phoenix.az.us
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
> 

--