Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1563 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] Gzip Fichiers .pdf par paquets

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Batch] Gzip Fichiers .pdf par paquets

n°1902660
kyzeur
Posté le 06-07-2009 à 12:56:41  profilanswer
 

Bonjour,
 
Je souhaite réaliser un script via programmation shell.
Je n'ai pas beaucoup d'expérience en shell (programmation).
 
Je souhaiterai un script utilisant la fonction gzip, j'ai vu dans le man qu'il y avait l'option -r pour zipper récursivement plusieurs fichiers en un fichier .gz, ce qui m'intéresse.
 
En gros, j'ai un répertoire avec des fichiers pdf, et moi je souhaite zipper ces fichiers par paquets de N fichiers .pdf, N étant une variable en dur qui pourra évoluer.
Pouvez vous m'aider à réaliser cela ?
 
Merci d'avance.

mood
Publicité
Posté le 06-07-2009 à 12:56:41  profilanswer
 

n°1902663
pataluc
Posté le 06-07-2009 à 13:03:49  profilanswer
 

gzip ne fait pas d'archive, mais juste de la compression. il te faut utiliser tar conjointement.
 
en gros gzip *.pdf ne donne pas un fichier .gz mais autant de fichier .gz que de .pdf.
 
il te faut faire un tar cvf archive1.tar fichiers_à_archiver.pdf puis un gzip archive1.tar pour obtenir une archive compressée de plusieurs pdf, ou, en une seule commande: tar cvzf archive1.tar.gz fichiers_à_archiver.pdf
 
 
sinon, pour ton regroupement, quel en est le critère? (taille, date, nom, ?)

n°1902671
kyzeur
Posté le 06-07-2009 à 13:15:15  profilanswer
 

Merci de ta réponse rapide.
Je ne considère pas de critères particuliers, l'ordre chronologique suffit amplement (tel que représenté par un ls -1).
Je vois la nécessité d'une boucle dans le répertoire où sont les fichiers, en prenant N fichiers à tar puis gzip, puis on passe aux suivant...  
Mais pour l'implémentation, mon manque d'expérience me fait défaut au niveau shell.

n°1902688
pataluc
Posté le 06-07-2009 à 13:50:05  profilanswer
 

tu peux tenter un truc comme ca:
 

Code :
  1. #Nb de fichiers par archive
  2. N=3
  3. s=""
  4. i=0
  5. j=0
  6. for f in `ls *.pdf`
  7. do
  8.     i=$((i+1))
  9.     s=$s" "$f
  10.     if [ $i -eq 3 ]
  11.     then
  12.         j=$((j+1))
  13.         echo tar cvzf archive_$j.tar.gz $s
  14.         i=0
  15.         s=""
  16.     fi
  17. done


 
on peut peut être faire plus joli, mais ca devrait marcher.

n°1902762
kyzeur
Posté le 06-07-2009 à 16:41:27  profilanswer
 

Ah merci ! Oui très bien.
Je suis en train d'améliorer mais un petit quelque chose à régler :
Si le nombre de fichiers pdf comme dans l'exemple est de 6, tout va bien, mais si c'est 5 ... un paquet de créer, l'autre je vais essayer de le gérer.

n°1902770
pataluc
Posté le 06-07-2009 à 16:49:08  profilanswer
 

ah oui faudrait rajouter derrière le done:

Code :
  1. i=$((i+1))
  2. if [ $i -ne $N ]
  3. then
  4.     j=$((j+1))
  5.     echo tar cvzf archive_$j.tar.gz $s
  6. fi



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] Gzip Fichiers .pdf par paquets

 

Sujets relatifs
[java] Problème d'optimisation de traitements batchracine pour les chemin d'accès de fichiers
script de remplacement de fichiers[BATCH] script de suppression des profils
Comparer valeurs de 3 fichiers et en afficher le resultatFichiers requis LibUSB
probléme de numerotation des fichiers lors du download[VBS][RESOLU][SCRIPT]Script de suppression de fichiers temporaires
Macro : Chercher les bons fichiers de liaisons.Batch - Réduire navigateur
Plus de sujets relatifs à : [Batch] Gzip Fichiers .pdf par paquets


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR