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 :

renommer fichiers en shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut renommer fichiers en shell
    Bonjour, c'est certainement très facile a faire, mais je suis, comment dire ... novice en shell.

    Voila, j'ai un exercice qui me bloque.

    l'énoncé est le suivant: faire un fichier de commande "renomme" permettant de renommer les fichiers contenus dans un répertoire.

    Seulement je dois mettre le répertoire en "paramètre" ( je ne sais même pas comment mettre un paramètre en shell)

    Je doit obligatoirement utiliser la commande "tr"

    Les espaces seront remplacés par des _
    Les caractères {[,;]} seront éliminés.


    Alors:
    je dois faire du répertoire passé en paramètre le répertoire courant.
    récupérer la liste de tous les noms de fichiers contenus dans ce répertoire.
    ensuite les renommer et les enregistrer...

    Le seul truc que je sais faire c'est
    $nouveau_nom= $nom |tr ' ' '_' ... ce qui je crois remplace les espaces par _
    ensuite $nouveau_nom= $nouveau_nom |tr -d '{[,;]}' ce qui je crois supprime les caractères ...
    pour finir mv $nom $nouveau_nom

    enfin bref, me manque pas mal d'éléments ^^', si quelqu'un pouvait m'aider, ce serait gentil

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

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

    je doit faire du répertoire passé en paramètre le répertoire courant.
    pas forcément...

    récupérer la liste de tout les noms de fichiers contenue dans ce répertoire.
    tu devrais utiliser une boucle for, qui va, pour chaque fichier trouvé, exécuter des commandes.
    Le seul truc que je sais faire c'est
    $nouveau_nom= $nom |tr ' ' '_'
    même pas
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    nouveau_nom=$(tr -d '{[,;]}' <<<"$nom" | tr ' ' '_')
    pour finir mv $nom $nouveau_nom
    ça c'est bon, si tu ajoutes des guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mv "$nom" "$nouveau_nom"
    fin de la boucle for.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 106
    Par défaut
    bonjour les gars,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nouveau_nom=$(tr -d '{[,;]}' <<<"$nom" | tr ' ' '_')
    merci N_BaH pour ton aide, j'ai une question: pourquoi mettre dans ton code des "<<<" au lieu de "<" ou "<<"

    la majorité des tutoriels sur le SHELL sont en anglais, donc..j'ai pas compris la fonction de cette redirection "<<<"

    merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    Par défaut
    bonjour,

    ça permet, en bash (ksh93 aussi il me semble), de ne pas faire `echo "$var" | cmd'

    man bash parle de chaînes en ligne (here strings)
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    Oh merci, c'est gentil de répondre aussi vite

    donc là j'ai tout le traitement, mais je ne sais toujours pas comment récupérer tous les noms des fichiers contenus dans le dossier.

    "je dois faire du répertoire passé en paramètre le répertoire courant. " C'est une obligation donné par mon prof : \

    Je ne sais pas si j’ai bien compris, mais les paramètres, c’est genre : renomme |nomdudossier où je veux lancer mon script non ?
    Et $1 correspond au premier paramètre, donc si je fais un cd $1 ça ferait du répertoire passé en paramètre mon répertoire courant, c’est ca ?

    donc après je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in *
    do
         tout le traitement vu plus haut
    done
    c'est à peu près ça ???

  6. #6
    Membre averti
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Par défaut
    Citation Envoyé par uraharasama Voir le message
    Je sais pas si j’ai bien compris, mais les paramètres, c’est genre : renomme |nomdudossier ou je veux lancer mon script non ?
    Et $1 correspond au premier paramètre, donc si je fait un cd $1 ça ferrais du répertoire passé en paramètre mon répertoire courant, c’est ca ?
    Oui c'est ça, sauf qu'il faut pas mettre le '|' dans l'appel à ton script.
    Ca sera donc renomme mon_repertoire

    Et ${1} contiendra bien mon_repertoire.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    impeccable, merci

    j'ai pas trop compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nouveau_nom=$(tr -d '{[,;]}' <<<"$nom" | tr ' ' '_')
    j'ai donc remplacer cette ligne par deux lignes
    ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    cd $1
    for nom in *
    do
    nouveau_nom=$(echo $nom|tr -d '{[,;]}')
    nouveau_nom=$(echo $nouveau_nom|tr ' ' '_')
    mv "$nom" "$nouveau_nom"
    done
    Tous fonctionne, encore un grand merci pour votre aide

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    Par défaut
    j'ai pas trop compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nouveau_nom=$(tr -d '{[,;]}' <<<"$nom" | tr ' ' '_')
    c'est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nouveau_nom=$(echo "$nom" | tr -d '{[,;]}' | tr ' ' '_')
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. [VBA-E]Déplacer/Renommer fichier excel
    Par wanou44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/02/2006, 16h01
  2. [DOS] renommer fichiers.aaa.bbb en fichiers.bbb
    Par Axiome dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 10/12/2005, 23h29
  3. Ouvrir un fichier Word (Shell
    Par priest69 dans le forum VBA Word
    Réponses: 6
    Dernier message: 21/09/2005, 16h53
  4. Renommer fichiers
    Par twartel dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 21/03/2005, 08h40
  5. Modifier chaîne dans fichier en shell
    Par MiKLnet dans le forum Autres langages
    Réponses: 2
    Dernier message: 11/10/2004, 11h31

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