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 :

Extraction de fichiers à partir de la date qui se trouve dans leur nom


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut Extraction de fichiers à partir de la date qui se trouve dans leur nom
    Bonjour tout le monde,
    j'aurais besoin de prendre des fichiers avec une intervalle dans le temps

    j'ai un répertoire qui contient des milliers de fichiers , le nom de mes fichiers est de la forme => fichier_21/05/2012 , fichier_22/05/2012, fichier_23/05/2012 et fichier_24/05/2012 ......etc
    j'aurais besoin de déplacer par exemple les fichiers entre le 22/05/2012 et le 24/05/2012 dans un nouveau répertoire
    pour les dates de l'intervalle elles sont données en ligne de commande $1 et $2

    quelqu'un peut m'aider svp

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    tu peux utiliser des variables jour/moi/annees

    mais il vaut mieux utiliser le format logique pour nommer les fichier avec horodatage
    20130531 par exemple comme ça c'est bien plus simple.... pour les tris.

    comme ça tu peux trier sur le nom de fichier....

    avec un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -name "*20130[1-3]*" -exec mv {} /rep/ \;
    par exemple pour les fichier de premier trimestre 2013...

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    fichier_21/05/2012
    Es-tu au courant que '/' est le séparateur entre répertoire? Tu vas pas me dire que quelqu'un a été assez peu pratique pour nommer des fichiers comme ça???

    Sinon, oui, on peut t'aider. Qu'as-tu fait?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut
    bonjour , et merci pour vos reponse
    @Flodelarab j'ai juste donné un exemple , pour le vrai nommage c'est de la forme
    truc_bidon_yymmdd_hhmiss_nnnn.dat

    @frp31 merci pour ta reponse mais le problème c'est que l'intervalle est entrée en parametre du script ( date entre $1 et $2 )
    comment pourrais je l'inclure dans le find ? avec un critère qui est la période entre deux dates données généralement de 2 à 5j maximum

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 662
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    Bonjour,

    vue l'ingéniosité qu'il faudra déployée pour faire comprendre (je ne suis même pas certain que ce soit possible) à find ce qu'il doit trouver, tu auras plus vite fait de coder cela en shell.

    ça veut dire
    • lister les fichiers
    • en extraire la date
    • la convertir en secondes depuis Epoch
    • comparer cette valeur avec les données fournies par l'utilisateur (également converties en secondes depuis Epoch)
    • ...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Citation Envoyé par saladin443 Voir le message
    bonjour , et merci pour vos reponse
    @Flodelarab j'ai juste donné un exemple , pour le vrai nommage c'est de la forme
    truc_bidon_yymmdd_hhmiss_nnnn.dat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ echo $fic
    truc_bidon_yymmdd_hhmiss_nnnn.dat
    $ sed 's/.*\(......\).\{16\}$/\1/;' <<<$fic
    yymmdd
    $ if [[ 130528 > 130529 ]];then echo oui;else echo non;fi
    non
    $ if [[ 130528 > 130527 ]];then echo oui;else echo non;fi
    oui
    $
    Voilà Tu as tout pour réussir.

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 352
    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 352
    Par défaut
    Bonjour,

    Si ton horodatage est bien yymmdd, un simple:
    -faire + 1 jour sur date la plus récente
    -sort sur la liste des fichiers
    -sed pour borner l'affichage entre les 2 dates en excluant la derniere ligne car celle-ci sera date plus récente + 1.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut
    @disedorgue
    @N_BaH
    merci pour vos réponse .
    @Flodelarab
    ta réponse m'a résolu le problème
    merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2012, 10h21
  2. Exploiter un userform qui se trouve dans un fichier à partir d'excel
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/02/2009, 08h25
  3. Réponses: 12
    Dernier message: 05/02/2009, 14h51
  4. Réponses: 2
    Dernier message: 31/07/2008, 10h07
  5. extraction minute a partir d'une date
    Par habasque dans le forum Oracle
    Réponses: 2
    Dernier message: 14/11/2006, 11h00

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