Question Toute méthode pour compresser par lots plusieurs fichiers?


Est-ce que quelqu'un sait comment plusieurs fichiers peuvent être compressés par GZIP?
J'ai beaucoup de fichiers dans un dossier et je dois les compresser individuellement.

En fait, j'ai trouvé un moyen de le faire. La ligne de commande GZIP binaire fait le travail.

J'ai utilisé gzip -r dir.

Merci pour vos efforts.


4
2018-02-10 20:13


origine


Quel système d'exploitation? - Karolos
Win7, désolé :) - avetarman
@avetarman, S'il vous plaît ajouter ce que vous avez fait comme une réponse, et l'accepter, plutôt que de simplement mettre la réponse dans la question - soandos


Réponses:


Utilisez simplement le gzip seul.

Par défaut, gzip prendra tout fichier transmis, le compressera et ajoutera l'extension .gz. c'est à dire.

gzip dir/* -r

serait gzip chaque fichier dans dir / * (et sous-répertoires).


2
2018-02-10 21:31





Essayez ce qui suit dans powershell (après avoir accédé au bon répertoire):

$files = get-childitem
foreach ($file in $files) {gzip $file}

Cela parcourra tous les fichiers du répertoire et les compressera tous.

Modifier: Si vous voulez faire tous les fichiers dans une arborescence de répertoires (c'est-à-dire dans un dossier et tous ses sous-dossiers), modifiez simplement $files = get-childitem  à $files = get-childitem -recurse 


4
2018-02-10 20:32



Cela pourrait être étendu à peu près à n'importe quel utilitaire de compression compatible CLI, y compris 7zip. - music2myear
Ouaip. Nice et adaptable de cette façon. (sur une note sans rapport, lorsque vous modifiez des liens, vérifiez-les d'abord car j'ai vu des parenthèses manquantes sur certaines de vos modifications. Pas grave, mais je pensais que vous deviez le savoir) - soandos
Thx pour la tête haute. - music2myear


J'utiliserais un for boucle. Êtes-vous inquiet que l'exécutable soit chargé plusieurs fois? Cela ne devrait pas être beaucoup, comparé au temps pris pour compresser.


3
2018-02-10 20:33



Peut-être fournir le code qui fera cela? - soandos


GZIP peut être utilisé pour compresser des fichiers individuels, mais la plupart du temps, vous constaterez des économies d'espace disque minimes. Les fichiers qui occupent 1 secteur consomment 1 secteur complet de l'espace disque, même si le fichier est inférieur à la taille du secteur. (c.-à-d. sector-size = 16kb, le fichier est de 8kb ... 'compressé' est de 5kb ... prend quand même 16kb d'espace disque) La puissance de gzip est beaucoup plus évidente lorsque vous combinez tous les fichiers fichier unique (en utilisant tar typiquement) et ensuite compresser l'archive singulière. (combinés, les "archives" peuvent prendre tous les fichiers et les combiner en 1 fichier singulier sur le disque ... ce qui aura moins d'espace mort entre les secteurs)

Par exemple:

tar -czf compressed_archive.tgz folder/*

le goudron -c crée une archive, z utilise la compression gzip, et f écrit les résultats dans un fichier appelé compress_archive.tgz. Vous pouvez également passer à la compression bz2 (ce qui fait mieux dans de nombreux cas) en changeant simplement la z passer à un j.

Si vous souhaitez ensuite extraire des fichiers de l'archive, vous pouvez simplement faire l'inverse

tar -zxf compressed_archive.tgz

qui ferait x extraire les fichiers qui étaient z gzip'd, f à partir du fichier d'archive appelé compress_archive.tgz.


2
2018-02-10 20:46



Merci. Je n'ai pas besoin d'archive. Je cherchais à compresser les fichiers de manière récursive. C'est pour un sitemap. Merci encore. - avetarman


Utilisation 7-zip pour mieux compresser


1
2018-02-10 20:26



Merci, mais cela ne fait qu'une seule archive compressée. Il ne traite pas les fichiers individuellement. - avetarman
Siva ce n'est pas une réponse à la question. C'est une affirmation d'un fait réel. Un vrai fait sans rapport - Lyndon White


J'ai trouvé que je devais adapter la méthode soandos powershell pour que cela fonctionne comme prévu (j'aurais ajouté un commentaire, mais je n'y étais pas autorisé).

$files = get-childitem -recurse | % { $_.FullName }
foreach ($file in $files) {gzip $file}

1
2017-08-26 15:42