[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Script pour faire un upper de case... [gestion des espaces]



On Tue, 22 Apr 2003 17:16:41 +0200
David CABATON <cabaton_david@yahoo.fr> wrote:

> comment en shell bash convertir tous les fichiers d'un repertoire en 
> majuscule...
> 
> for i in `ls`; do j=`echo $i |tr '[a-z]' '[A-Z]'` ;echo $j; done
> 
> ceci me eprmet de les afficher en majuscule mais ne renome pas les 
> fichiers, j'ai essaye de fair
> 
> for i in `ls`; do j=`touch tmp/$i |tr '[A-Z]' '[a-z]'` ;echo $j; done
> 
> pour les creer dans un autre rep... marche pas !!!

créer un fichier mon_mv dans /usr/local/bin (touch /usr/local/bin/mon_mv)
le rendre executable (chmod 755 /usr/local/bin/mon_mv)

saisir dans le fichier mon_mv :
===========Debut du fichier=========
#!/bin/bash
read LIGNE
while [ "$LIGNE" ]; do
    echo -n "mv \"$LIGNE\" \""
    echo -n "$LIGNE" |tr '[a-z]' '[A-Z]'
    echo "\""
    read LIGNE
done
===========Fin du fichier===========

aller dans le répertoire contenant les répertoires à renommer

executer :
	find -type d -maxdepth 1 |mon_mv

et si le résultat te convient :
	find -type d -maxdepth 1 |mon_mv |bash

L'avantage de cette méthode est qu'elle gère les nom de répertoires avec espaces
(contrairement à une boucle "for")

Nicolas



Reply to: