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

Linux Discussion :

copier liste de fichiers


Sujet :

Linux

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 67
    Par défaut copier liste de fichiers
    Bonjour,
    J'ai une centaines de fichiers du type:
    fichier001-bob-05.xml
    fichier008-bab-09.xml
    ...etc

    J'aimerais copier ces fichiers dans le même dossier mais sans la fin (-05 et -09) et je ne sais pas comment faire

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    est ce que tous tes fichiers sont du types :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <part1>-<part2>-<part3>.xml
    et tu cherches à virer part3 à chaque fois ?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 67
    Par défaut
    Oui,oui c'est exactement sa.
    Mais cette partie 3 en question n'est jamais la même.

    Merci.

  4. #4
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    et part1 et part2 sont les mêmes... je parie...

    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cp $(ls <part1>-<part2>-*) $(ls <part1>-<part2>-* | cut -d \- -f 3)

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 67
    Par défaut
    Non en fait ça n'est pas cela.
    J'ai une liste de fichiers du type:
    bob1-20-40.xml
    bob8-45-12.xml
    bob45-87-62.xml
    ....etc

    Le seul point commun entre les fichiers est "bob".
    Comment faire pour me retrouver avec cela: bob_i40
    bob_i12
    et bob_i62

    En prenant donc le 3eme chiffre et en rajoutant _i derriere bob.

    Désolé je me suis trompé de question en ecrivant tout à l'heure.

    Merci

  6. #6
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cp $(ls bob*) /le/path/bob_i$(ls bob* | cut -d \- -f 3)
    (je sais c'est moche mais bon )

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 67
    Par défaut
    Merci c'est parfait!

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 67
    Par défaut
    En fait sa ne marche pas.
    Je me suis dis qu'en trifouillant sa allait marcher mais il me dit qu'il ne connait pas la commande cut et cp et les parenthese ne sont pas "expected".
    Je ne comprend pas trop.
    Help!

    Merci.

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bennyben87 Voir le message
    ...mais il me dit qu'il ne connait pas la commande cut et cp
    Euh non ça c'est pas possible. Les commandes "cut" et "cp" sont des commandes totalement standard qu'on trouve de partout. Tente de taper en direct
    Si ça ne marche pas (cut: command not found) contacte ton administrateur système et demande-lui de vérifier ton PATH

    Citation Envoyé par bennyben87 Voir le message
    et les parenthese ne sont pas "expected".
    Il se peut que tu sois sur un Bourne Shell de base qui ne connait pas la syntaxe $(commande). Si c'est ça, alors remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp $(ls bob*) /le/path/bob_i$(ls bob* | cut -d \- -f 3)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp `ls bob*` /le/path/bob_i`ls bob* | cut -d \- -f 3`
    Mais perso j'ai un doute sur le résultat que ça va donner car ton but est de remplacer chaque fichier par un autre et aucune commande ne peut faire ça en une ligne.

    Moi, je serais d'avis de passer par un script
    Citation Envoyé par bennyben87 Voir le message
    J'ai une liste de fichiers du type:
    bob1-20-40.xml
    bob8-45-12.xml
    bob45-87-62.xml
    ....etc

    Le seul point commun entre les fichiers est "bob".
    Comment faire pour me retrouver avec cela: bob_i40
    bob_i12
    et bob_i62

    En prenant donc le 3eme chiffre et en rajoutant _i derriere bob.
    Donc comme je l'ai dit, un script qui traite chaque fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/sh
    ls bob*.xml |while read fic
    do
        echo $fic
        num=`basename $fic ".xml" |cut -f3 -d\-`     # Faut-il vraiment un backslash devant "-" ?
        cp "$fic" "bob_i$num"
    done
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 67
    Par défaut
    Oui le backslash était nécessaire.
    Mais je ne comprend pas pourquoi.A quoi sert-il?

    En tout cas un grand merci.

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 67
    Par défaut
    Peus tu m'expliquer la premiere commande?
    celle avec le read et le ls.

    J'ai l'impression quelle met dans le echo la liste des fichiers.
    Enfin c'est bizarre je suis pas très bon c'est pour sa que je demande tant d'explications.

    Encore merci.

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bennyben87 Voir le message
    Oui le backslash était nécessaire.
    Mais je ne comprend pas pourquoi.A quoi sert-il?
    Certains caractères sont interprétés et transformés par le shell. Par exemple l'étoile. Tente de taper
    t'auras pas d'étoile au résultat.

    Le backslash a pour but de demander au shell de ne pas transformer le caractère qui le suit
    Suis étonné car il ne me semblait pas que le "-" fasse partie de cette catégorie de caractères...

    Citation Envoyé par bennyben87 Voir le message
    Peus tu m'expliquer la premiere commande?
    celle avec le read et le ls.
    Le ls envoie dans le pipe son résultat c'est à dire la liste des fichiers séparés par un <return>.
    Le read lit toute l'entrée standard jusqu'au <return>. Et l'entrée standard vient du pipe.
    Donc le read lit le pipe et s'arrête au premier <return>. Il stocke dans la variable ce qui a été lu (le nom de fichier). Et comme il a lu il renvoie "vrai" et le while fait son traitement. Pendant ce temps le pipe a été vidé des caractères lus (le premier nom).
    Puis le read lit de nouveau le pipe et récupère le nom suivant. Et ainsi de suite.
    Une fois le pipe vidé, le read ne lit plus rien et renvoie "faux". Le while s'arrête.
    Moyen simple pour traiter n'importe quel flux entrant ligne par ligne.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 67
    Par défaut
    Ok super j'ai compris.
    Merci beaucoup!

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

Discussions similaires

  1. Copier-coller des fichiers à partir d'un listing.txt
    Par Gizmil dans le forum Scripts/Batch
    Réponses: 13
    Dernier message: 05/05/2020, 12h49
  2. Rechercher dans un fichier et copier la liste des fichiers
    Par bigs3232 dans le forum Shell et commandes GNU
    Réponses: 23
    Dernier message: 18/09/2011, 00h36
  3. copier liste d'un dossier dans fichier disque
    Par coursia dans le forum Débuter
    Réponses: 4
    Dernier message: 31/08/2011, 15h47
  4. Réponses: 1
    Dernier message: 06/02/2009, 17h58
  5. Copier un répertoire et liste de fichiers.
    Par piotrr dans le forum Windows Forms
    Réponses: 9
    Dernier message: 17/06/2007, 15h39

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