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 :

Copie de fichier en fonction avec incrémentation


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut Copie de fichier en fonction avec incrémentation
    j'ai un répertoire nommé ned_ajout_csv avec des fichiers fich fich_1 fich_2
    j'aimerais chercher le fichier ayant le plus grand numéro exemple fich_n et copier le fichier fich en fich_n+1
    par exemple ,si dans le repertoire ned_ajout_csv le dernier fichier est fich_8 donc je copie fich en fich_9
    j'ai fait quelque chose comme celà mais je ne suis pas sur du tout que c'est bon
    merci pour votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i in ned_ajout_csv/*
    do
    cp $i `echo $i | sed 's/\([0-9.]+\)/\1zz/g'`
    done

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 127
    Par défaut
    Citation Envoyé par bigs3232 Voir le message
    j'ai fait quelque chose comme cela mais je ne suis pas sûr du tout que c'est bon
    Quand j'ai des choses tordues comme ça à faire, je me crée un dossier de test qui va ressembler comme deux gouttes d'eau au dossier de prod, avec les mêmes noms de fichiers, et je teste dans le dossier de... test ! Il est où le problème ?

  3. #3
    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
    En l'état, ça doit recopier ton fichier fich_n en fich_n et donc avec la possibilité de le vider.

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    j'ai cette erreur et je ne sais pas comment faire pour chercher le chiffre maximum et incrémenter
    cp: 'ned_ajout_csv/ned_ajout_1.csv' et 'ned_ajout_csv/ned_ajout_1.csv' identifient le même fichier

  5. #5
    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
    Voici un exemple en bash:
    Le contenu de mon répertoire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ ls -1
    fich_10.csv
    fich_1.csv
    fich_2.csv
    fich_3.csv
    fich_4.csv
    fich_5.csv
    fich_6.csv
    fich_7.csv
    fich_8.csv
    fich_9.csv
    la ligne en bash pour traiter (ici, je ne fais qu'un echo) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ for i in $(echo * | sed 's/[^0-9]/\n/g' | sort -rnu); do echo mv fich_${i}.csv fich_$((i+1)).csv; done
    mv fich_10.csv fich_11.csv
    mv fich_9.csv fich_10.csv
    mv fich_8.csv fich_9.csv
    mv fich_7.csv fich_8.csv
    mv fich_6.csv fich_7.csv
    mv fich_5.csv fich_6.csv
    mv fich_4.csv fich_5.csv
    mv fich_3.csv fich_4.csv
    mv fich_2.csv fich_3.csv
    mv fich_1.csv fich_2.csv

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    balèse disedorgue.j'essaie de comprendre votre code .pas facile

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

Discussions similaires

  1. BASH: copie de fichiers en fonction d'un motif en récursif, et avec écrasement
    Par Oursdeglace dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 24/06/2011, 11h46
  2. Réponses: 4
    Dernier message: 17/12/2008, 18h47
  3. Copie de fichier par FTP avec un BAT
    Par Thony_7 dans le forum Windows
    Réponses: 11
    Dernier message: 31/05/2007, 16h54
  4. [FTP] Probleme de copie de fichier en reseaux avec easphp
    Par needles94000 dans le forum Langage
    Réponses: 17
    Dernier message: 29/03/2006, 15h24
  5. Copy de fichier sur réseau avec mot de passe
    Par Guile dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 07/10/2005, 15h45

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