Retourner aux forums || Retourner au forum Programmation.shell

Programmation.shell : tar récursif avec filtrage de fichiers

Posté par Ju Hash (page perso, ) le 20 octobre 2006
0
Bonjour,


Je cherche à créer une archive contenant tous les *.txt d'un ensemble de répertoires. Logiquement, la commande :

tar cfvz mon.tar.gz repertoire/*.txt

ne créée une archive avec les .txt qui sont uniquement placés à la racine de repertoire/, et pas les répertoires d'après...
J'ai essayé l'option -T de tar, mais visiblement, je ne 'ai pas su l'utiliser...
Un pipe de ls -R *.txt vers tar va t il conserver l'arborescence?

Est ce quelqu'un pourrait m'aider ? Merci d'avance.

> Lire le message (6 commentaires, moyenne: 1,2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

find

Posté par skud () le 20/10/2006 à 06:18. (lien). Évalué à 2.

Essaye ça:
find repertoire/ -name '*.txt' | tar -czvf mon.tar.gz


Un ls -R *.txt ne marchera pas, car le motif '*.txt' est remplacé avant que la commande ls soit exécutée.
ls ls -R *.txt va donc lister récursivement le contenu des répertoires dont le nom correspond au motif '*.txt' dans ton répertoire courant.

L'option -T de tar permet d'aller chercher la liste des fichiers à archiver dans un fichier plutôt que sur la ligne de commande.

C'est pourtant facile

Posté par Ernest H (Jabber id, ) le 20/10/2006 à 06:55. (lien). Évalué à 1.

tar cvzf mon.tar.gz repertoire/**/*.txt

  • [^]Re: C'est pourtant facile

    Posté par Ju Hash (page perso, ) le 20/10/2006 à 09:16. (lien). Évalué à 0.

    hé beh non, c'est pas si facile que ça, car cette commande n'est pas recursive, et va chercher les *.m dans les premiers repertoire contenus dans "repertoire"... Mais merci quand même.

    • [^]Re: C'est pourtant facile

      Posté par Donk (Jabber id, ) le 20/10/2006 à 10:14. (lien). Évalué à 1.

      Et en utilisant l'option --recursion de tar?

      --
      JabberID: donk@jabber.fr
      • [^]Re: C'est pourtant facile

        Posté par Ju Hash (page perso, ) le 20/10/2006 à 10:53. (lien). Évalué à 1.

        idem. Ma solution est la suivante :
        find $DIRECTORY -name "*.$EXTENSION" | xargs tar cfvz $FILENAME

    • [^]Re: C'est pourtant facile

      Posté par Ernest H (Jabber id, ) le 20/10/2006 à 10:57. (lien). Évalué à 2.

      Si si. Tu n'as pas vu la double étoile. La double étoile signifie tous les chemins possibles, même s'ils contiennent de multiples répertoires.
      (mais c'est propre à zsh)

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell