4

I am able to gzip every file in a directory (mydirectory) using the command:

gzip --suffix .gz --recursive mydirectory

But...

  1. I don't want the images (.ico, .jpg, .png, .gif) and PDFs (.pdf) files within the directory to be gzipped.

  2. And those files that are gzipped have the .gz extension. I don't want that. For example, I'd like the gzipped index.html file be index.html itself, and NOT index.html.gz.

So, how do I do this, optimally/efficiently?


Here's how I am doing this now (a pretty lengthy process).

Compress all files in mydirectory but don't delete/replace original files:

cd ~/mydirectory

find . -type f | \
while read -r x
do
  gzip -c -9 "$x" > "$x.gz"
done

Remove all gzipped image and PDF files:

find . -type f -iname "*.ico.gz" -exec rm -f {} \;
find . -type f -iname "*.jpg.gz" -exec rm -f {} \;
find . -type f -iname "*.png.gz" -exec rm -f {} \;
find . -type f -iname "*.gif.gz" -exec rm -f {} \;
find . -type f -iname "*.pdf.gz" -exec rm -f {} \;

Rename the existing gzipped files, essentially removing the .gz extension from their name:

cd

for f in `find mydirectory -iname '*.gz'`; do
  mv $f ${f%.gz} 
done

What we pretty much have now are gzipped text files (.html, .xml, .css, .js) without .gz extension, and uncompressed/un-gzipped images and PDFs.

1 Answer 1

3

Step 1: make a backup. Then use find to filter your files and run gzip and then move the file back to the original filename:

find -type f -not \( -iname '*.ico' -or -iname '*.jpg' -or -iname '*.png' -or -iname '*.gif' \) -exec gzip "{}" \; -exec mv "{}.gz" "{}" \;

This is a destructive command so please be careful. Remove the -exec... commands to begin with to make sure it's only selecting files you want to compress.

4
  • Great, but half the answer. Now all I need is that they don't have the .gz extension (which they do, as of now).
    – its_me
    Mar 30, 2013 at 13:18
  • @TheoneManis Yeah sorry was struggling with getting the exec to work. Turns out you can add more than one so that fixes everything.
    – Oli
    Mar 30, 2013 at 13:26
  • Problem! Just checked my site on REDbot, and I saw this error: "This response was compressed using GZip, but the data was corrupt." Is something wrong with the command? (see for yourself: redbot.org/?uri=http%3A%2F%2Faahank.com%2F)
    – its_me
    Mar 30, 2013 at 17:59
  • Something's really wrong with the command, the way I see it. Other ways I've tried output proper gzipped files.
    – its_me
    Mar 31, 2013 at 14:17

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .