GNU/Linux >> Tutoriels Linux >  >> Linux

gzip tous les fichiers sans les supprimer

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

Le -c pousse le résultat vers stdout et conserve l'original seul. L'inconvénient est que vous devez trouver les fichiers vous-même. Pour un parcours plus sophistiqué, vous pouvez utiliser find(1) , cependant, comme ci-dessus :. recherche à partir du répertoire courant, et -type f renvoie le nom de chaque fichier normal.


find . -type f -not \( -name '*.gz' -or -name '*[~#]' \) -exec sh -c 'gzip -c "{}" > "{}.gz"' \;

Vous pouvez facilement le changer pour inclure ce que vous voulez compresser ( -name '*.txt -or -name '*.html etc.) au lieu de comme maintenant, en excluant certains fichiers (déjà compressés, fichiers de sauvegarde et fichiers temporaires).

Gère également très bien les espaces dans le nom de fichier.

Modifier gzip à echo gzip pour tester. Ou ignorez complètement la partie -exec.

Modifier : Oh, j'ai oublié de mentionner que cela ne vérifie pas si <target>.gz existe déjà. Cela peut ou non être un problème.

Edit2 : Ok, nous y allons avec quelque chose qui vérifie le fichier existant. Si cela peut être voulu. Pardonnez la monotonie.

while read file; do if [ ! -f "$file.gz" ]; then echo "Compressing $file"; gzip -c "$file" > "$file.gz"; else echo "Not overwriting $file.gz";  fi  done < <(find . -type f -not \( -name '*.gz' -or -name '*[~#]' \))

Mon find -foo n'est peut-être pas ce qu'il pourrait être, il peut très bien être possible de sauter directement dans find.


gzip -k possibilité

gzip 1.6 (juin 2013) a ajouté le -k, --keep option, vous pouvez donc :

gzip -kr .

et il ne supprimera pas vos fichiers d'origine.

Trouvé sur :https://unix.stackexchange.com/questions/46786/how-to-tell-gzip-to-keep-original-file


Linux
  1. Comment trouver tous les fichiers se terminant par .rb avec Linux ?

  2. Trouvez des fichiers et tarez-les (avec des espaces)

  3. Comment compresser tous les fichiers dans tous les sous-répertoires de bash

  4. Trouver tous les fichiers de zéro octet dans le répertoire et les sous-répertoires

  5. Répertorier tous les fichiers d'images graphiques avec rechercher ?

Comment trouver des fichiers en double sous Linux et les supprimer

Comment trouver tous les périphériques série (ttyS, ttyUSB, ..) sous Linux sans les ouvrir ?

Comment obtenir tous les fichiers dépassant une certaine taille et les supprimer

Trouver tous les fichiers dont le nom contient une chaîne

Trouver plusieurs fichiers et les renommer sous Linux

Comment trouver tous les fichiers de zéro octet dans le répertoire