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 ***