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]"