Forum Linux.général script

Posté par  .
Étiquettes : aucune
0
12
avr.
2007
Bonjour,

Je souhaite récupérer le nom des fichiers d'un répertoire et pouvoir les compressé un par un, comment puis je faire?

Merci d'avance
  • # Ah, la la...

    Posté par  . Évalué à 3.

    Dans l'ordre (listes non exhaustives) :
    man bash / man sh / man ksh selon le shell utilisé pour écrire le script
    man ls / man find selon la méthode voulue pour utiliser la commande de compression ci-après
    man gzip / man bzip2 / man zip / man compress selon le format de l'archive désirée....
    A toi de jouer !
  • # find + gzip

    Posté par  . Évalué à 5.

    Cette commande va "gzipper" tous les fichiers du répertoire "toto/" :
    find toto/ -type f -exec gzip {} \;
    • [^] # Re: find + gzip

      Posté par  . Évalué à 1.

      Merci ça marche bien mais je souhaite faire la chose suivante:

      zipper les fichiers d'origine de format "aaaaaa.txt" en "aaaaaa.gz" et pouvoir ensuite récupérer le nom du fichier de type "aaaaaa"

      Merci
      • [^] # Re: find + gzip

        Posté par  . Évalué à 1.

        Je suggère (les "_" sont là uniquement pour la lisibilité) :

        for i in *.txt ; do
        _ _ gzip -c <$i >${i%.txt}.gz
        _ _ echo $i comprimé en ${i%.txt}.gz
        done


        La syntaxe ${i%.txt} enlève le ".txt" final du contenu de la variable "i" et permet ensuite de changer l'extension en rajoutant ".gz" (cf le man de bash, à la partie "Remplacement des paramètres").
  • # Base de script

    Posté par  (site web personnel) . Évalué à 3.

    Tu peux partir sur une base de ce genre...


    #!/bin/bash
    for fichier in *
    do
    /bin/tar cvfz $fichier.tar.gz $fichier
    done
  • # Faire simple...

    Posté par  . Évalué à 4.

    Salut,

    Si tu veux simplement compresser tous les fichiers d'un répertoire donné, qu'il n'y a pas de sous-répertoire et qu'il n'y a pas trop de fichiers (en gros, il ne faut pas que ça dépasse de trop les 1000 fichiers), un simple
    gzip *
    dans le répertoire voulu ou
    gzip /chemin/vers/ton/répertoire/*
    devrait suffire.
    Suivant tes goûts, tu peux remplacer gzip par compress ou bzip2, mais pas par zip (la façon de passer les arguments à zip est différente).

    S'il y a beaucoup de fichiers dans le répertoire, il reste la possibilité du xargs :
    ls -Q | xargs -n 500 gzip
    [-Q permet de bien gérer les fichiers avec des espaces dans leur nom]

    S'il faut prendre en compte les fichiers dans une arborescence, alors la solution d'omnikron me semble bien.

    Le script d'Ellendhel crée une archive compressée par fichier, ce qui me semble un peu lourd.

    A+
    JJD

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.