On 1/2/07, James Long <[EMAIL PROTECTED]> 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
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to