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

Unix Discussion :

Fonction de renommage de 2 fichiers


Sujet :

Unix

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2009
    Messages : 33
    Points : 27
    Points
    27
    Par défaut Fonction de renommage de 2 fichiers
    Bonjour,
    J'ai farfouillé un peu sur le net sans vraiment trouver de réponse à ma question qui peut paraître bête de prime abord.
    J'aurai aimé savoir s'il existait une fonction qui permet en UNE SEULE COMMANDE de renommer un fichier A en B et un fichier B en A? En quelque sorte d'inverser les noms (sans passer par un nom temporaire)
    Du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mv -inverselesnoms A.txt B.txt
    Si quelqu'un connait je suis preneur.
    Merci d'avance
    Bonne journée à tous

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    en fait tout dépend ce que tu cherches, à strictement parler c'est impossible techniquement d'inverser les deux noms de fichier simultanément (on en laisse un "sans nom" pendant qu'on modifie l'autre pour libérer son nom pour le premier ?)
    la seule solution passe par un nom de fichier temporaire, tu peux très bien en faire une commande/fonction unique à coller au fond de ton bashrc par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function echange_les_fichiers() {
            tmpfile="${2}_${RANDOM}_${RANDOM}_${RANDOM}.tmp" # on est 'a peu pres' sur que ca entrera pas en conflit avec un autre fichier ^^
            mv "$2" "$tmpfile" &&
            mv "$1" "$2" &&
            mv "$tmpfile" "$1"
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ for i in A B; do echo "j'etais fichier $i" > $i; done
    $ grep . A B
    A:j'etais fichier A
    B:j'etais fichier B
    $ echange_les_fichiers A B  # une seule commande donc
    $ grep . A B
    A:j'etais fichier B
    B:j'etais fichier A

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2009
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Bonjour BufferBob et merci pour ta réponse.
    En effet, j'utilise déjà cette technique. Comme tu dis : obligation d'utiliser un nom temporaire.
    Mais j'ai eu cette petite lueur qui m'a dit : renseignes toi pour voir s'il n'existe pas une fonction native proposant cette option.
    Ce n'est pas très grave en soit, je continue comme je faisais.
    Encore merci.

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Voilà une méthode pas très orthodoxe ou rapide mais qui se passe de fichier temporaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echange_les_fichiers() {
        cat -- "$1" | (sleep 1;mv -- "$2" "$1";cat > "$2")
    }
    ɹǝsn *sıɹɐlos*

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

Discussions similaires

  1. Problème fonction UNLINK pour supprimer un fichier
    Par dolf13 dans le forum Langage
    Réponses: 3
    Dernier message: 21/07/2006, 22h59
  2. Réponses: 10
    Dernier message: 03/07/2006, 11h32
  3. La fonction à la fermeture d'un fichier est exécutée 2 fois...
    Par Pierre Fauconnier dans le forum Access
    Réponses: 4
    Dernier message: 27/04/2006, 14h14
  4. Fonction c qui compare deux fichiers ???
    Par babyface dans le forum C
    Réponses: 4
    Dernier message: 19/11/2005, 13h07
  5. Réponses: 12
    Dernier message: 14/06/2004, 13h06

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