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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 349
    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 349
    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 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 292
    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 349
    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 349
    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 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 292
    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 349
    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 349
    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.

+ Répondre à la discussion
Cette discussion est résolue.

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, 11h28
  2. Un PC au prix d'un café par jour : Le retour !!
    Par netah25 dans le forum Ordinateurs
    Réponses: 34
    Dernier message: 21/02/2006, 23h29
  3. Graphique par jour
    Par anouar_chaieb dans le forum Access
    Réponses: 5
    Dernier message: 05/10/2005, 11h58
  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, 10h53

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