Vincent BRACH a écrit :
Le samedi 19 septembre 2009 à 12:36 +0200, Guy Passail a écrit :
Yann a écrit :
Guy Passail a écrit :
Suffit de demander :

find . -name "* *" |while read i; do mv "$i" `echo $i | tr " " "_"` ;  done

Non testé, mais devrait marcher.

Limitation :
Ça ne marchera que si les répertoires n'ont pas d'espace dans leur nom.
Pas drôle sans les répertoires (:-))


Fonctionne avec l'arbo suivante :
(avant) :

$ tree
.
|-- bubu bibi bobo.txt
|-- dir with space
|   |-- dir with space 2
|   |   `-- tu tu tu.txt
|   `-- plop truc.txt
`-- titi toto tata.txt

2 directories, 4 files

$ find . -depth -regex ".*\ .*" | while read line ; do mv "$line"
"`dirname "$line"`/`basename "$line" | tr ' ' '_'`" ; done

(aprés)

$ tree
.
|-- bubu_bibi_bobo.txt
|-- dir_with_space
|   |-- dir_with_space_2
|   |   `-- tu_tu_tu.txt
|   `-- plop_truc.txt
`-- titi_toto_tata.txt

2 directories, 4 files

La petite "suptilité" réside dans le fait qu'il faut commencer par
traiter le contenu d'un directory avant celui-ci (option -depth de
"find") et conserver dans le nom de fichier de destination du "mv" le
dirname originale (et ne modifier que le basename) sinon on va avoir un
petit souci car on va tenter de déplacer dir with space/dir with space
2/tu tu tu.txt -> dir_with_space/dir_with space_2/tu_tu_tu.txt , hors
dir_with_space/dir_with space_2 n'existe pas encore (et si on fait
l'inverse on aura le problème que le répertoire original n'existe plus
donc les 'mv' suivant ne fonctionneront pas...)

Ceci dit y'a ptet' moyen de faire plus simple (ou tout simplement
d'utiliser le script perl rename qui fait ça trés bien ;))

C'est plus drôle là ;-) ?

@+
Vincent BRACH







 Diffusez cette liste aupres de vos relations :-)
            Linux Azur : http://linux-azur.org
       Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***



Bravo, tu es donc le grand vainqueur du concours de la commande bash du WE !
Sur la toile (site que je ne fréquente pas habituellement!), j'avais trouvé un long script dont je ne sais ce qu'il apporterait de plus...
http://www.novell.com/coolsolutions/tools/15601.html
Merci à tous
Guy

Diffusez cette liste aupres de vos relations :-)
           Linux Azur : http://linux-azur.org
      Vous etes responsable de vos propos.
*** Pas de message SMS, HTML ni de PJ SVP ***

Répondre à