web-dev-qa-db-fra.com

Gzip et renommer (supprimer .gz extension) tous les fichiers sauf les images et les PDF?

Je suis capable de compresser tous les fichiers d'un répertoire (mydirectory) à l'aide de la commande:

gzip --suffix .gz --recursive mydirectory

Mais...

  1. Je ne veux pas que les images (.ico, .jpg, .png, .gif) et les fichiers PDF (.pdf) du répertoire soient gzippés.

  2. Et les fichiers gzippés ont l'extension .gz. Je ne veux pas ça. Par exemple, je voudrais que le fichier gzippé index.html soit index.html lui-même, et NON index.html.gz.

Alors, comment puis-je faire cela, de manière optimale/efficace?


Voici comment je le fais maintenant (un processus assez long).

Compressez tous les fichiers dans mydirectory mais ne supprimez/remplacez pas les fichiers originaux:

cd ~/mydirectory

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

Supprimez toutes les images gzippées et les fichiers PDF:

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 {} \;

Renommez les fichiers gzip existants, en supprimant essentiellement l'extension .gz de leur nom:

cd

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

Ce que nous avons à peu près maintenant, ce sont des fichiers texte gzippés (.html, .xml, .css, .js) sans extension .gz, ainsi que des images et des PDF décompressés/non compressés.

3
its_me

Étape 1: faites une sauvegarde. Ensuite, utilisez find pour filtrer vos fichiers et exécutez gzip, puis déplacez le fichier vers le nom de fichier d'origine:

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

Ceci est une commande destructive alors soyez prudent. Supprimez les commandes -exec... pour commencer afin de vous assurer que vous ne sélectionnez que les fichiers que vous souhaitez compresser.

3
Oli