OVH Cloud OVH Cloud

Changer minuscule en majuscule ?

10 réponses
Avatar
dominique
Bonjour,

J'ai trouvé une solution afin de remplcer les esapces par des _ dans les
noms de fichiers avec ceci :

---------
for a in * ;
do
b=$(echo $a | sed 's/[az]/[AZ]/g');
mv "$a" "$b";
done
---------

Mais comment puis transformer les lettres minuscules des noms de
fichiers en majuscules ?


Dominique MARTIN CV.pdf en DOMINIQUE_MARTIN_CV.PDF ?

Merci

10 réponses

Avatar
JustMe
dominique a écrit

Mais comment puis transformer les lettres minuscules des noms de fichiers en
majuscules ?


avec tr

mv "$a" "`echo $a | tr '[a-z]' '[A-Z]'`"

et

mv "$a" "`echo $a | tr '[a-z ]' '[A-Z_]'`"

fera les deux d'un coup

Avatar
Pascal Bourguignon
dominique writes:
J'ai trouvé une solution afin de remplcer les esapces par des _ dans
les noms de fichiers avec ceci :

---------
for a in * ;
do
b=$(echo $a | sed 's/[az]/[AZ]/g');
mv "$a" "$b";
done
---------

Mais comment puis transformer les lettres minuscules des noms de
fichiers en majuscules ?


Dominique MARTIN CV.pdf en DOMINIQUE_MARTIN_CV.PDF ?


for a in * ; do
b=$(echo "$a"|sed -e 'y/abcdefghijklmnopqrstuvwxyz /ABCDEFGHIJKLMNOPQRSTUVWXYZ_/')
mv "$a" "$b"
done

--
__Pascal Bourguignon__ http://www.informatimago.com/

"Remember, Information is not knowledge; Knowledge is not Wisdom;
Wisdom is not truth; Truth is not beauty; Beauty is not love;
Love is not music; Music is the best." -- Frank Zappa

Avatar
JustMe
Pascal Bourguignon a écrit
dominique writes:
J'ai trouvé une solution afin de remplcer les esapces par des _ dans
les noms de fichiers avec ceci :

---------
for a in * ;
do
b=$(echo $a | sed 's/[az]/[AZ]/g');
mv "$a" "$b";
done
---------

Mais comment puis transformer les lettres minuscules des noms de
fichiers en majuscules ?


Dominique MARTIN CV.pdf en DOMINIQUE_MARTIN_CV.PDF ?


for a in * ; do
b=$(echo "$a"|sed -e 'y/abcdefghijklmnopqrstuvwxyz
/ABCDEFGHIJKLMNOPQRSTUVWXYZ_/') mv "$a" "$b"
done


Ahrg..........

Et "tr", il est fait pour les chiens "tr" ? :-D


Avatar
Pascal Bourguignon
JustMe writes:

Pascal Bourguignon a écrit
dominique writes:
J'ai trouvé une solution afin de remplcer les esapces par des _ dans
les noms de fichiers avec ceci :
---------
for a in * ;
do
b=$(echo $a | sed 's/[az]/[AZ]/g');
mv "$a" "$b";
done
---------
Mais comment puis transformer les lettres minuscules des noms de
fichiers en majuscules ?
Dominique MARTIN CV.pdf en DOMINIQUE_MARTIN_CV.PDF ?


for a in * ; do
b=$(echo "$a"|sed -e 'y/abcdefghijklmnopqrstuvwxyz
/ABCDEFGHIJKLMNOPQRSTUVWXYZ_/') mv "$a" "$b"
done


Ahrg..........

Et "tr", il est fait pour les chiens "tr" ? :-D


On peut vouloir faire des choses comme:

sed -e 'y/abcdefghijklmnopqrstuvwxyz /ABCDEFGHIJKLMNOPQRSTUVWXYZ_/'
-e 's/__*/_/g'

et autres transformations...

--
__Pascal Bourguignon__ http://www.informatimago.com/

Nobody can fix the economy. Nobody can be trusted with their finger
on the button. Nobody's perfect. VOTE FOR NOBODY.



Avatar
JustMe
Pascal Bourguignon a écrit
JustMe writes:

Pascal Bourguignon a écrit
dominique writes:
J'ai trouvé une solution afin de remplcer les esapces par des _ dans
les noms de fichiers avec ceci :
---------
for a in * ;
do
b=$(echo $a | sed 's/[az]/[AZ]/g');
mv "$a" "$b";
done
---------
Mais comment puis transformer les lettres minuscules des noms de
fichiers en majuscules ?
Dominique MARTIN CV.pdf en DOMINIQUE_MARTIN_CV.PDF ?


for a in * ; do
b=$(echo "$a"|sed -e 'y/abcdefghijklmnopqrstuvwxyz
/ABCDEFGHIJKLMNOPQRSTUVWXYZ_/') mv "$a" "$b"
done


Ahrg..........

Et "tr", il est fait pour les chiens "tr" ? :-D


On peut vouloir faire des choses comme:

sed -e 'y/abcdefghijklmnopqrstuvwxyz /ABCDEFGHIJKLMNOPQRSTUVWXYZ_/'
-e 's/__*/_/g'

et autres transformations...


Super lourd comparé à
tr '[a-z ]' '[A-Z_]' :-D




Avatar
Benoit Izac
Bonjour,

le 26/07/2006 à 18:47, dominique a écrit dans le
message <44c79c8d$0$13521$ :

J'ai trouvé une solution afin de remplcer les esapces par des _ dans
les noms de fichiers avec ceci :

---------
for a in * ;
do
b=$(echo $a | sed 's/[az]/[AZ]/g');


Ça n'est pas la solution à ce que tu dis plus haut...

mv "$a" "$b";


mv -- "$a" "$b"

done
---------

Mais comment puis transformer les lettres minuscules des noms de
fichiers en majuscules ?


Des solutions ont été données mais elles ne fonctionneront pas avec des
noms de fichier contenant des accents. Si tu disposes de Perl :

perl -Mlocale -e 'while (<*>) {$a = $_; s/(.*)/U$1/; rename($a, $_);}'

Il faut positionner LC_CTYPE à la bonne valeur pour que ça fonctionne
correctement.

--
Benoit Izac

Avatar
ts
"J" == JustMe writes:






J> Super lourd comparé à
J> tr '[a-z ]' '[A-Z_]' :-D

Oui mais cela est mieux :-)

moulon% echo 'aá eèé' | tr '[:lower:] ' [:upper:]_
AÁ_EÈÉ
moulon%


--

Guy Decoux





Avatar
JustMe
ts a écrit
"J" == JustMe writes:






J> Super lourd comparé à
J> tr '[a-z ]' '[A-Z_]' :-D

Oui mais cela est mieux :-)

moulon% echo 'aá eèé' | tr '[:lower:] ' [:upper:]_
AÁ_EÈÉ
moulon%


Exact !






Avatar
fabrice-pas-despame.bacchella
On Thu, 27 Jul 2006 10:41:42 +0200, JustMe
wrote:

ts a écrit
"J" == JustMe writes:






J> Super lourd comparé à
J> tr '[a-z ]' '[A-Z_]' :-D

Oui mais cela est mieux :-)

moulon% echo 'aá eèé' | tr '[:lower:] ' [:upper:]_
AÁ_EÈÉ
moulon%


Exact !



Sous reserve que LANG est correctement positionné. Si la commande
'locale' renvoie C pour LC_CTYPE, vous avez perdu, les lettres non
ASCII (code >=) sont ignorés.







Avatar
Stephane Chazelas
On Wed, 26 Jul 2006 18:47:20 +0200, dominique wrote:
[...]
---------
for a in * ;
do
b=$(echo $a | sed 's/[az]/[AZ]/g');
mv "$a" "$b";
done
---------

Mais comment puis transformer les lettres minuscules des noms de
fichiers en majuscules ?
[...]


Avec zsh:

autoload zmv
zmv '*[[:lower:] ]' '${(U)f// /_}'

--
Stephane