Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Jan 2007 10:42:44 -0800
From:      "Kurt Buff" <kurt.buff@gmail.com>
To:        "James Long" <list@museum.rain.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Batch file question - average size of file in directory
Message-ID:  <a9f4a3860701031042u45757b7ag897d55e1969f84b8@mail.gmail.com>
In-Reply-To: <20070103035000.GA99263@ns.umpquanet.com>
References:  <20070102200721.31D1C16A517@hub.freebsd.org> <20070103035000.GA99263@ns.umpquanet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 1/2/07, James Long <list@museum.rain.com> wrote:
<snip my problem description>
> Hi, Kurt.
>
> Can I make some assumptions that simplify things?  No kinky filenames,
> just [a-zA-Z0-9.].  My approach specifically doesn't like colons or
> spaces, I bet.  Also, you say gzipped, so I'm assuming it's ONLY gzip,
> no bzip2, etc.

Right, no other compression types - just .gz.

Here's a small snippet of the directory listing:

-rw-r-----  1 kurt  kurt   108208 Dec 21 06:15 dummy-zKLQEWrDDOZh
-rw-r-----  1 kurt  kurt    24989 Dec 28 17:29 dummy-zfzaEjlURTU1
-rw-r-----  1 kurt  kurt    30596 Jan  2 19:37 stuff-0+-OvVrXcEoq.gz
-rw-r-----  1 kurt  kurt     2055 Dec 22 20:25 stuff-0+19OXqwpEdH.gz
-rw-r-----  1 kurt  kurt    13781 Dec 30 03:53 stuff-0+1bMFK2XvlQ.gz
-rw-r-----  1 kurt  kurt    11485 Dec 20 04:40 stuff-0+5jriDIt0jc.gz


> Here's a first draft that might give you some ideas.  It will output:
>
> foo.gz : 3456
> bar.gz : 1048576
> (etc.)
>
> find . -type f | while read fname; do
>   file $fname | grep -q "compressed" && echo "$fname : $(zcat $fname | wc -c)"
> done
>
>
> If you really need a script that will do the math for you, then
> pip the output of this into bc:
>
> #!/bin/sh
>
> find . -type f | {
>
> n=0
> echo scale=2
> echo -n "("
> while read fname; do
>   if file $fname | grep -q "compressed"
>   then
>     echo -n "$(zcat $fname | wc -c)+"
>     n=$(($n+1))
>   fi
> done
> echo "0) / $n"
>
> }
>
> That should give you the average decompressed size of the gzip'ped
> files in the current directory.


Hmmm....

That's the same basic approach that Giogos took, to uncompress the
file and count bytes with wc. I'm liking the 'zcat -l' contstruct, as
it looks more flexible, but then I have to parse the output, probably
with grep and cut.

Time to put on my thinking cap - I'll get back to the list on this.

Kurt



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a9f4a3860701031042u45757b7ag897d55e1969f84b8>