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 :

Déplacer et renommer un ensemble de fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par défaut Déplacer et renommer un ensemble de fichiers
    Bonjour,

    j'ai dans mon répertoire courant plusieurs fichiers texte que j'aimerais déplacer dans mon répertoire Archives en ajoutant la date au nom des fichiers.

    Je précise que je ne veux pas faire une commande mv pour chaque fichier mais une seule qui garderait le nom de fichier et ajouterais la date.

    Je suis tombé sur de nombreux sujets sur internet mais je n'y arrive pas.

    Voici la piste que j'ai suivie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for file in *.txt; do mv $file $file_`date +%d%m%Y` Archives/; done

    Merci pour votre aide

  2. #2
    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
    Par défaut
    Si aucun fichier .txt n'a d'espace ou autre caractère problématique dans son nom, tu peux utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for file in *.txt; do
        mv $file Archives/${file}_$(date +%d%m%Y) 
    done

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Si aucun fichier .txt n'a d'espace ou autre caractère problématique dans son nom, tu peux utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for file in *.txt; do
        mv $file ${file]_$(date +%d%m%Y) Archives/
    done
    Merci pour la réponse , j'avais déjà utiliser cette solution et j'ai une erreur :
    mv impossible d'évaluer fichier.txt_09032016 : Aucun fichier ou dossier de ce type
    Le fichier est bien déplacer mais sans modification de son nom.

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    francois@baal:~$ for i in f1 sortie ; do mv $i tst/"$i$(date +%Y)" ; done
    francois@baal:~$ ls -l tst
    total 8
    -rw-r--r-- 1 francois francois 10 mars   9 20:54 f12016
    -rw-r--r-- 1 francois francois 32 mars   9 21:16 sortie2016
    je te laisse adapter

  5. #5
    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
    Par défaut
    Citation Envoyé par Stabillo Voir le message
    Merci pour la réponse , j'avais déjà utiliser cette solution et j'ai une erreur :

    Le fichier est bien déplacer mais sans modification de son nom.
    Désolé , il y avait deux coquilles dans ma réponse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for file in *.txt; do
        mv $file Archives/${file}_$(date +%d%m%Y) 
    done

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par défaut
    Citation Envoyé par frp31 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    francois@baal:~$ for i in f1 sortie ; do mv $i tst/"$i$(date +%Y)" ; done
    francois@baal:~$ ls -l tst
    total 8
    -rw-r--r-- 1 francois francois 10 mars   9 20:54 f12016
    -rw-r--r-- 1 francois francois 32 mars   9 21:16 sortie2016
    je te laisse adapter
    Merci cette solution fonctionne parfaitement;

    jlliagre merci pour tes réponses mais ta commande ne se termine pas. J'ai donc utiliser celle de frp31.

    Je clos la discussion.

  7. #7
    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
    Par défaut
    Citation Envoyé par Stabillo Voir le message
    jlliagre merci pour tes réponses mais ta commande ne se termine pas
    ???

    Elle ne se termine pas que s'il y a un nombre infini de fichiers ".txt" ou si le matériel est hs, ce dont je doute ...

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Citation Envoyé par Stabillo Voir le message
    Merci pour la réponse , j'avais déjà utiliser cette solution et j'ai une erreur :

    Le fichier est bien déplacer mais sans modification de son nom.
    Désolé , il y avait deux coquilles dans ma réponse:
    C'est pas grave, il y avait deux coquilles dans sa réponse

    1 partout la balle au centre.


    À moi : je voudrais bien savoir comment et pourquoi la commande echo gère les espaces dans les noms de fichiers, et pas la commande mv !

    Soit un dossier de test avec 2 fichiers .txt dont l'un a un espace dans son nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # for file in *.txt; do echo $file Archives/${file}_$(date +%d%m%Y); done
    bidon.txt Archives/bidon.txt_10032016
    titi espace.txt Archives/titi espace.txt_10032016
     
    # for file in *.txt; do mv $file Archives/${file}_$(date +%d%m%Y); done
    mv: la cible « espace.txt_10032016 » n'est pas un répertoire


    Merci,

    EDIT : j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # for file in *.txt; do mv "$file" "Archives/${file}_$(date +%d%m%Y)"; done
    Satanées double-quotes

Discussions similaires

  1. [Batch] Script pour renommer un ensemble de fichiers.
    Par SiKhounet dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 01/05/2014, 16h50
  2. [XL-2010] Renommer feuille sur un ensemble de fichiers .xls
    Par Steppingstone dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/02/2014, 17h24
  3. Déplacer et renommer des fichier CSV
    Par smain_inf dans le forum VBScript
    Réponses: 5
    Dernier message: 25/02/2010, 18h54
  4. Renommer ensemble de fichiers
    Par misterenart dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 03/11/2005, 23h53
  5. Compresser et decompresser un ensemble de fichier
    Par Walm dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/01/2004, 16h23

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