Partage
  • Partager sur Facebook
  • Partager sur Twitter

Renommer tous les dossiers

DE mon espace courant.

    16 décembre 2014 à 23:35:59

    Bonsoir je suis entrain de lire le livre de Mateo sur linux.et de ce fait je me suis donné quelques pétis exos!!

    Bon bref je veux renommer tous les fichiers de mon repertoire en remplaçant les espaces contenues dans leur non par le caractere  _.

    J'y arrive pas!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Merci de bien vouloir m'expliquer comment faire.

    • Partager sur Facebook
    • Partager sur Twitter
    UnDebutant
      17 décembre 2014 à 17:20:04

      Bonsoir débutant Linux !
      Je cherchais à te mettre sur une piste mais c'est assez difficile, soit je t'en dirais trop, soit pas assez... Du coup, voici directement le code ! =)

      #!/bin/bash
      #
      # script bash récursif de renommage de dossiers
      # - remplacement d'espace par underscore
      # - suppressions des accents
      #
      # attention : ce script agit sur toute la sous-arborescence
      # d'un dossier et va modifier chaque nom de dossier
      # enlever -i derrière la commande mv pour enlever la confirmation
       
      renommer() {
        for i in *
        do
          if test -d "$i"
          then
            avant="$i"
            apres="$(echo "$i" | sed 's/ /_/g' |
                                 sed "s/'/_/g" |
                                 sed 's/[àâ]/a/g' |
                                 sed 's/[ç]/c/g' |
                                 sed 's/[éè]/e/g' |
                                 sed 's/[ï]/i/g' |
                                 sed 's/[ô]/o/g' |
                                 sed 's/ù/u/g')"
      # pour passer les majuscules en minuscules
      # utiliser la commande tr (translate)
            if [ ! "$avant" = "$apres" ] ; then
             echo "$avant"
             echo "$apres"
             echo
             mv -i "$avant" "$apres"
             cd "$apres"
             else
             cd "$avant"       
            fi
            renommer
            cd ..
          fi
        done
      }
      
      renommer

      Ce code vient du site xavadminsys.blogspot.fr qui est au passage très bien !
      En espérant avoir résolu ton problème.

      • Partager sur Facebook
      • Partager sur Twitter
        17 décembre 2014 à 18:13:28

        Merci j'ai finalement trouver une methode bien plus facile
        • Partager sur Facebook
        • Partager sur Twitter
        UnDebutant
          17 décembre 2014 à 22:42:01

          for f in * ; do mv "$f" "${f// /_}" ; done ? Dur de faire plus simple ;)

          • Partager sur Facebook
          • Partager sur Twitter
            20 décembre 2014 à 20:58:35

            jo_link_noir a écrit:

            for f in * ; do mv "$f" "${f// /_}" ; done ?
            Dur de faire plus simple ;)


            J'avoue que ta méthode est encore plus simple.
            • Partager sur Facebook
            • Partager sur Twitter
            UnDebutant
              22 décembre 2014 à 11:38:24

              Il y a aussi la commande rename ou perl_rename qui peuvent faire cela facilement :

              rename " " "_" *
              perl_rename 's/ /_/g' *



              -
              Edité par millman 22 décembre 2014 à 11:38:43

              • Partager sur Facebook
              • Partager sur Twitter

              Renommer tous les dossiers

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown