On lun, jan 24, 2000 at 06:14:58 +0100, St�phane BERDIN wrote: > Salut, > > J'aimerai renommer tous les fichiers d'un r�p�rtoire, en fait, > remplacer tous les " " par des "_". > > voil� ce que je fais : for i in `find *` ; do mv $i `echo $i|tr " " > "_"`; done > > je me prends une erreur qui est : > > "lors du d�placement de plusieurs fichiers, le dernier param�tres doit > �tre un r�pertoire." "mv --help pour + d'infos" > > une id�e ?
Plusieurs choses : - dans `find *`, * est remplac� (par le shell) par la liste de tous les fichiers du r�pertoire courant. Ta boucle est donc �quivalente � : "for i in *". Il faut utiliser par exemple `find . -type f` si tu ne veux que les fichiers de tous les sous-r�pertoires du r�pertoire courant. - for i in xxx : l'expression xxx est �valu�e pour attribuer les valeurs de i, et l'espace est un s�parateur. Donc i ne prendra pas les bonnes valeurs. Ex : $ touch "foo bar" $ for i in *; do echo "Fichier : $i"; done Fichier : foo Fichier : bar Il faut utiliser read : $ ls | while read i; do echo "Fichier : $i"; done Fichier : foo bar En r�sum� : find . -type f | while read i; do mv "$i" `echo $i | tr ' ' _`; done Olivier -- A shortcut is the longest distance between two points.

