Modifier nom fichier

Bonjour,

Est-ce possible de me donner un script pour remplacer les espaces blancs contenus dans les noms de fichiers dans un repertoire par le caractere "sous lignes", i.e par un "_".

Merci de votre aide.
Configuration: Tout ce que vous avez aimé savoir, sans jamais oser le demander!

1 réponse

  1. Modérateur
    Salut,
    $ touch 'a b.txt'
    $ ls -l a*.txt
    -rw-r--r-- 1 lami20j lami20j 0 févr. 25 17:44 a b.txt
    $ for f in $(ls *.txt|tr " " _);do mv -v "${f/_/ }" $f;done
    `a b.txt' -> `a_b.txt'
    $ ls -l a*.txt
    -rw-r--r-- 1 lami20j lami20j 0 févr. 25 17:44 a_b.txt

    1. Modérateur
      Salut,

      for f in $(ls *.txt|tr " " _);do mv -v "${f/_/ }" $f;done
      T'as pas plus simple ?

      for f in *.txt;do mv -v "$f" "${f// /_}";done


      Non ?
    2. Modérateur
      @jipicyRe,

      Oui.
      J'avais la tête à autre chose quand j'ai tapé la commande ;-)
      Sinon plus simple c'est avec rename je pense ;-)
    3. Modérateur
      @lami20jPar plus simple j'entendais surtout le fait de ne pas transformer les espaces en underscores, pour les remettre en espace avant de les transformer en underscores ;-))
    4. Modérateur
      @jipicyRe,

      C'est puisque j'ai utilisé ls par rapport à toi qui a utilisé la globalisation de shell
    5. @jipicyEn fait le probleme est plus compliqué, pour moi en tout cas, c'est que j'ai des repertoires et sous repertoires, dont les noms peuvent avoir des espaces blancs, comment alors changer ces espaces comme indiqué par l'execution d'un script.

      Merci encore une fois.