IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[bash] Archiver par jour un répertoire


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 90
    Par défaut [bash] Archiver par jour un répertoire
    Bonjour,

    Dans un répertoire, j'ai 9000 fichiers. les noms des fichiers sont timestampés :
    FICHIER_2012-04-23-09-48-28.csv
    FICHIER_2012-04-23-10-17-32.csv
    FICHIER_2012-04-23-10-18-27.csv
    (...)
    FICHIER_2013-03-23-11-18-22.csv
    FICHIER_2013-03-23-11-19-19.csv
    FICHIER_2013-03-24-09-44-43.csv
    FICHIER_2013-03-24-10-06-07.csv
    (...)
    FICHIER_2013-04-24-10-13-44.csv
    FICHIER_2013-04-26-09-35-13.csv
    FICHIER_2013-04-26-09-36-23.csv
    FICHIER_2013-04-26-09-38-50.csv
    FICHIER_2013-04-26-09-39-48.csv
    FICHIER_2013-04-26-09-39-49.csv

    Je cherche à archiver tous ça. Le résultat souhaité serait :
    FICHIER_2012-04-23.tar.gz
    (...)
    FICHIER_2013-03-23.tar.gz
    FICHIER_2013-03-24.tar.gz
    (...)
    FICHIER_2013-04-24.tar.gz
    FICHIER_2013-04-26.tar.gz

    c'est à dire 1 fichier tar.gz par jour traité.
    Comment réaliser ceci rapidement ?

    Merci.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    Bonjour,

    Si tu as des fichiers tous les jours, tu peux faire une boucle sur la date que tu décrémentes au fur et a mesure (la syntaxe est la suivante):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ date --date="1 day ago" +"%Y-%m-%d"
    2013-05-02
    $ date --date="2 day ago" +"%Y-%m-%d"
    2013-05-01
    Puis avec la valeur de cette date (on dira que la variable s'appelle DATE):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tar czf Fichier_${DATE}.tar.gz Fichier_${DATE}*.csv
    Je te laisse le soin de créer la boucle

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in *.csv;do echo ${i:0:18};done |sort|uniq|while read maLigne ;do tar -czf $maLigne.tar.gz $maLigne*.csv;done
    Non testé à grande échelle.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    "sort -u" à la place de "sort|uniq"

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    Le pire, c'est que j'ai fait la même réflexion pour d'autres


  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    Et oui, cela m'arrive aussi assez souvent

    Pour éviter le 'for i in *', j' aurai plus fait quelque chose de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name 'FICHIER*.csv' | sort -u -t\- -k1,3| cut -d\- -f1-3 | xargs -ITT tar czf TT.tar.gz TT*.csv
    Attention: je ne l'ai pas testé, un "echo" juste avant le "tar" permettra de voir ce que cela donnerait.

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    Très pédagogique. Et ça marche sur mes deux fichiers csv récupérés.

    Y a-t-il un problème avec "for i in *" ? Ou c'est juste pour l'art ?

    Pour find, la récursivité par défaut ne me plaît pas, il va falloir ajouter un -maxdepth 0
    Le tri par champ est instructif mais pas utile puisque ce sont les champs 1 2 3.

  8. #8
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    Citation Envoyé par Flodelarab Voir le message

    Y a-t-il un problème avec "for i in *" ? Ou c'est juste pour l'art ?
    Oui, il peut y avoir un problème qui est sur la limite de la ligne de commande (je crois qu'elle est fixé maintenant à 65535 caractères, mais à vérifier) et selon ces dires, ici on se retrouverait avec 9000 champs.
    Pour find, la récursivité par défaut ne me plaît pas, il va falloir ajouter un -maxdepth 0
    on est d'accord, mais là, je laisse faire chtom pour affiner son find
    Le tri par champ est instructif mais pas utile puisque ce sont les champs 1 2 3.
    Euh, si, pour le -u sinon cela ramènerait tous les fichiers et il refabriquerait la même archive le même nombre de fois qu'il y a de fichier ayant la même date.
    [CORRECTION]Tu as raison, en inversant le sort et le cut[/CORRECTION]

    Il est vrai que pour le cut, on peut simplifier par cut -d\- -f-3

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Ma petite contribution...

    Les fichiers "csv" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ ls *.csv
    FICHIER_2012-04-23-10-17-32.csv  FICHIER_2013-03-24-09-44-43.csv  FICHIER_2013-04-26-09-36-23.csv
    FICHIER_2012-04-23-10-18-27.csv  FICHIER_2013-03-24-10-06-07.csv  FICHIER_2013-04-26-09-38-50.csv
    FICHIER_2013-03-23-11-18-22.csv  FICHIER_2013-04-24-10-13-44.csv  FICHIER_2013-04-26-09-39-48.csv
    FICHIER_2013-03-23-11-19-19.csv  FICHIER_2013-04-26-09-35-13.csv  FICHIER_2013-04-26-09-39-49.csv
    Je découpe le nom en partant de la fin, vu que celle-ci est fixe (heure-minute-seconde.csv). L'archivage avec "tar" et son option '-r' (append) afin d'ajouter les jours identiques. Puis au final on compresse avec "gzip" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $ for i in *.csv;do tar -r -vv -f ${i::-13}.tar ${i};done && gzip -v *.tar
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2012-04-23-10-17-32.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2012-04-23-10-18-27.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-03-23-11-18-22.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-03-23-11-19-19.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-03-24-09-44-43.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-03-24-10-06-07.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-04-24-10-13-44.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-04-26-09-35-13.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-04-26-09-36-23.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-04-26-09-38-50.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-04-26-09-39-48.csv
    -rw-r--r-- jp/jp             0 2013-05-04 10:06 FICHIER_2013-04-26-09-39-49.csv
    FICHIER_2012-04-23.tar:	 98.8% -- replaced with FICHIER_2012-04-23.tar.gz
    FICHIER_2013-03-23.tar:	 98.8% -- replaced with FICHIER_2013-03-23.tar.gz
    FICHIER_2013-03-24.tar:	 98.8% -- replaced with FICHIER_2013-03-24.tar.gz
    FICHIER_2013-04-24.tar:	 98.9% -- replaced with FICHIER_2013-04-24.tar.gz
    FICHIER_2013-04-26.tar:	 98.5% -- replaced with FICHIER_2013-04-26.tar.gz
    Le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $ ls -1X
    FICHIER_2012-04-23-10-17-32.csv
    FICHIER_2012-04-23-10-18-27.csv
    FICHIER_2013-03-23-11-18-22.csv
    FICHIER_2013-03-23-11-19-19.csv
    FICHIER_2013-03-24-09-44-43.csv
    FICHIER_2013-03-24-10-06-07.csv
    FICHIER_2013-04-24-10-13-44.csv
    FICHIER_2013-04-26-09-35-13.csv
    FICHIER_2013-04-26-09-36-23.csv
    FICHIER_2013-04-26-09-38-50.csv
    FICHIER_2013-04-26-09-39-48.csv
    FICHIER_2013-04-26-09-39-49.csv
    FICHIER_2012-04-23.tar.gz
    FICHIER_2013-03-23.tar.gz
    FICHIER_2013-03-24.tar.gz
    FICHIER_2013-04-24.tar.gz
    FICHIER_2013-04-26.tar.gz

  10. #10
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    Je pense que le 'for i in *' ne fonctionnera pas dans son cas, s'il a comme il dit 9000 fichiers puisque le nom d'un fichier fait environ 30 caractères, ce qui représenterait une chaine de 270000 caractères.

    Sinon, pour la proposition que je faisais, si on inverse le cut avec le sort, je pense que l'on peut remplacer le sort par uniq puisque le find comme le ls ou le echo * fait déjà le tri, ce qui donnerait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name 'FICHIER*.csv' | cut -d\- -f-3 | uniq | xargs -ITT tar czf TT.tar.gz TT*.csv
    Et en logique plus rapide qu'avec le sort...
    A tester

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name 'FICHIER*.csv' | cut -d\- -f-3 | uniq | xargs -ITT tar czf TT.tar.gz TT*.csv
    A tester
    J'ai testé, et ça merdoie , la faute à xargs qui ne développe pas l'astérisque comme le ferait bash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ find . -name 'FICHIER*.csv' | cut -d\- -f-3 | uniq | xargs -t -ITT tar czf TT.tar.gz TT*.csv
    tar czf ./FICHIER_2013-04-26.tar.gz ./FICHIER_2013-04-26*.csv 
    tar: ./FICHIER_2013-04-26*.csv : stat impossible: Aucun fichier ou dossier de ce type
    tar: Arrêt avec code d'échec à cause des erreurs précédentes
    tar czf ./FICHIER_2013-04-24.tar.gz ./FICHIER_2013-04-24*.csv 
    tar: ./FICHIER_2013-04-24*.csv : stat impossible: Aucun fichier ou dossier de ce type
    [...]
    La solution consiste à passer l'ensemble du tar à bash...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $ find . -name 'FICHIER*.csv' -printf "%f\n" | cut -d\- -f-3 | uniq | xargs -t -ITT bash -c 'tar cvzf TT.tar.gz TT*.csv'
    bash -c tar cvzf FICHIER_2013-04-26.tar.gz FICHIER_2013-04-26*.csv 
    FICHIER_2013-04-26-09-35-13.csv
    FICHIER_2013-04-26-09-36-23.csv
    FICHIER_2013-04-26-09-38-50.csv
    FICHIER_2013-04-26-09-39-48.csv
    FICHIER_2013-04-26-09-39-49.csv
    bash -c tar cvzf FICHIER_2013-04-24.tar.gz FICHIER_2013-04-24*.csv 
    FICHIER_2013-04-24-10-13-44.csv
    bash -c tar cvzf FICHIER_2013-03-24.tar.gz FICHIER_2013-03-24*.csv 
    FICHIER_2013-03-24-09-44-43.csv
    FICHIER_2013-03-24-10-06-07.csv
    bash -c tar cvzf FICHIER_2013-03-23.tar.gz FICHIER_2013-03-23*.csv 
    FICHIER_2013-03-23-11-18-22.csv
    FICHIER_2013-03-23-11-19-19.csv
    bash -c tar cvzf FICHIER_2012-04-23.tar.gz FICHIER_2012-04-23*.csv 
    FICHIER_2012-04-23-09-48-28.csv
    FICHIER_2012-04-23-10-17-32.csv
    FICHIER_2012-04-23-10-18-27.csv
    J'ai aussi rajouté l'otion -printf "%f\n" à find, sans quoi un dossier nommé "." était créé dans chaque archive

    Bon dimanche à tou(te)s.

  12. #12
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    Merci zip31, bien vu

    Pour l'histoire du point, il est vrai que c'est plus propre mais techniquement je ne vois pas trop de différence

    Bon Dimanche

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Merci zip31, bien vu
    De rien

    Pour l'histoire du point, il est vrai que c'est plus propre mais techniquement je ne vois pas trop de différence
    Certes, c'est juste que graphiquement avec le gestionnaire d'archives on se retrouve avec un dossier "."
    Mais il est vrai qu'en ligne de commande cette anomalie n’apparaît pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ tar -tf FICHIER_2013-04-26.tar.gz 
    ./FICHIER_2013-04-26-09-35-13.csv
    ./FICHIER_2013-04-26-09-36-23.csv
    ./FICHIER_2013-04-26-09-38-50.csv
    ./FICHIER_2013-04-26-09-39-48.csv
    ./FICHIER_2013-04-26-09-39-49.csv
    Donc, le printf est inutile. Merci à toi également de ce fait

  14. #14
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    En fait on peut utilisé dans ce cas très précis l'option printf de find si les fichiers s'appelle bien tous pareil à la date et heure prêtes, cela permet de s'affranchir du cut, car on peut demander au find de le "faire" en lui demandant de n'afficher que les 18 caractères du nom des fichiers qui nous interesse.

    Allez, un peu de haute volée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $ find . -name 'FICHIER*.csv' -printf "%.18f\n" | uniq | xargs -t -ITT bash -c 'tar cvzf TT.tar.gz TT*.csv'
    bash -c tar cvzf FICHIER_2012-04-23.tar.gz FICHIER_2012-04-23*.csv
    FICHIER_2012-04-23-09-48-28.csv
    FICHIER_2012-04-23-10-17-32.csv
    FICHIER_2012-04-23-10-18-27.csv
    bash -c tar cvzf FICHIER_2013-03-23.tar.gz FICHIER_2013-03-23*.csv
    FICHIER_2013-03-23-11-18-22.csv
    FICHIER_2013-03-23-11-19-19.csv
    bash -c tar cvzf FICHIER_2013-03-24.tar.gz FICHIER_2013-03-24*.csv
    FICHIER_2013-03-24-09-44-43.csv
    FICHIER_2013-03-24-10-06-07.csv
    bash -c tar cvzf FICHIER_2013-04-24.tar.gz FICHIER_2013-04-24*.csv
    FICHIER_2013-04-24-10-13-44.csv
    bash -c tar cvzf FICHIER_2013-04-26.tar.gz FICHIER_2013-04-26*.csv
    FICHIER_2013-04-26-09-35-13.csv
    FICHIER_2013-04-26-09-36-23.csv
    FICHIER_2013-04-26-09-38-50.csv
    FICHIER_2013-04-26-09-39-48.csv
    FICHIER_2013-04-26-09-39-49.csv
    PS: l'option -t de xargs n'est là que pour le verbose...

  15. #15
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    J'ai pas trop envie de me passer du cut. Car en en fait, on régresse. Supprimer les 13 derniers caractères est meilleur que de prendre les 18 premiers.
    Les fichiers peuvent s'appeler FICHIER mais aussi JOSEPHINE ou MARC.

  16. #16
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    Personnellement, pour du "one shot" et en toute connaissance de cause, je pourrais l'utiliser tel quel.
    Après, si ce code doit être utilisé dans des scripts qui perdure, je garderais le cut et je rajouterais aussi quelques options au find,etc...
    En bref, je ferais un code plus robuste aux variations.
    Mais ici, au peu d'informations que l'on a (comme souvent malheureusement ), je pense que l'on peut se permettre des petites fantaisies comme faire de "l'extrème spécifique" comme ici

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 90
    Par défaut
    Bonjour,

    Merci à tous pour vos réponses et votre implication dans la résolution de mon problème

    J'ai finalement pris cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name 'FICHIER*.csv' | cut -d\- -f-3 | uniq | xargs -t -ITT tar czf TT.tar.gz TT*.csv
    J'avais l'impression que ça tournait en boucle : j'ai interrompu le traitement au bout de 10 minutes car plus aucun fichier tar.gz ne se créaient.

    J'ai fait ceci pour comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name 'FICHIER*.csv' | cut -d\- -f-3 | uniq | xargs -t -ITT echo tar czf TT.tar.gz TT*.csv > SCRIPT.SH
    Et dans SCRIPT.SH, j'ai X fois la même commande :
    tar czf ./FICHIER_2012-11-02.tar.gz ./FICHIER_2012-11-02*.csv
    tar czf ./FICHIER_2012-11-11.tar.gz ./FICHIER_2012-11-11*.csv
    tar czf ./FICHIER_2012-11-02.tar.gz ./FICHIER_2012-11-02*.csv
    tar czf ./FICHIER_2013-02-15.tar.gz ./FICHIER_2013-02-15*.csv
    tar czf ./FICHIER_2012-11-02.tar.gz ./FICHIER_2012-11-02*.csv
    tar czf ./FICHIER_2012-09-26.tar.gz ./FICHIER_2012-09-26*.csv
    tar czf ./FICHIER_2012-12-07.tar.gz ./FICHIER_2012-12-07*.csv
    tar czf ./FICHIER_2012-11-02.tar.gz ./FICHIER_2012-11-02*.csv
    tar czf ./FICHIER_2012-09-27.tar.gz ./FICHIER_2012-09-27*.csv
    tar czf ./FICHIER_2012-12-15.tar.gz ./FICHIER_2012-12-15*.csv
    tar czf ./FICHIER_2012-11-02.tar.gz ./FICHIER_2012-11-02*.csv
    tar czf ./FICHIER_2013-03-06.tar.gz ./FICHIER_2013-03-06*.csv
    tar czf ./FICHIER_2012-12-19.tar.gz ./FICHIER_2012-12-19*.csv
    (...)
    Le fichier SCRIPT.SH créé comprends 7429 lignes.

    Voici quelques commandes supplémentaires utilisées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    # find . -name 'FICHIER*.csv' | cut -d\- -f-3 | uniq | wc -l
    7429
    # find . -name 'FICHIER*.csv' | wc -l
    9571
    Une idée sur pourquoi "2012-11-02" apparait plusieurs fois ?

    Merci encore

  18. #18
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    Bonjour,

    Remplace uniq par sort -u cela fonctionnera peut-être mieux, find a peut-être du mal à trier quand il y a un grand nombre de fichier

    Sinon, la commande que tu as choisi ne fonctionne pas en l'état, sauf si tu l'utilises, comme tu le fais dans la 2ème ligne, en redirigeant via echo dans un fichier.

    Sinon, celle qui fonctionne (à la commande uniq près), c'est celle avec bash -c

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 90
    Par défaut
    Je me suis mal exprimé dans mes tests c'est cette commande que j'ai utilisé :

    find . -name 'FICHIER*.csv' -printf "%f\n" | cut -d\- -f-3 | uniq | xargs -t -ITT bash -c 'tar cvzf TT.tar.gz TT*.csv'
    J'ai remplacé le uniq par sort -u.
    A priori ca fonctionne bien cette fois.

    Merci pour tout !

  20. #20
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    L'explication est que uniq supprime les lignes identiques qui se suivent. Si on ne trie pas, elle ne se suivent pas.. D'où sort -u (tri et unicité).


    [Hors-sujet] J'ai rencontré un cas où sort et uniq peuvent être utilisé de concert:
    sort n'a pas cette fonctionnalité de compte.
    [/Hors-sujet]

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Batch] Récupérer taille fichiers par jour dans un répertoire
    Par Korben-Dallas dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 11/10/2011, 12h28
  2. Un PC au prix d'un café par jour : Le retour !!
    Par netah25 dans le forum Ordinateurs
    Réponses: 34
    Dernier message: 22/02/2006, 00h29
  3. Graphique par jour
    Par anouar_chaieb dans le forum Access
    Réponses: 5
    Dernier message: 05/10/2005, 12h58
  4. [Petite requête] Nombre de transactions par jour
    Par Braim dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/04/2003, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo