Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/01/2007, à 14:35

sylvaing01

Majuscule au début des mots

Bonjour,

j'essaie de renommer des fichiers en mettant une majuscule au début de chaque mot du nom du fichier.

ex: mon fichier.txt doit donner Mon Fichier.txt

voilà seulement en parcourant le forum j'ai trouvé cette ligne interressante:

rename 'y/a-z/A-Z/' *    ; qui me met tout en majuscule

j'ai donc essayé comme çà:

rename 's/[ ][a-z]/ A-Z/' *

mais çà me donne:  Mon A-Zichier

j'ai beau essayer des variantes, je ne parvient pas à trouver.

est ce que quelqu'un aurait une idée?

Hors ligne

#2 Le 29/01/2007, à 14:57

goodluck

Re : Majuscule au début des mots

Salut,

Et que vivent les espaces dans les noms de fichiers (ou de dossiers) big_smile


Amicalement, Gerard ;)
http://counter.li.org/cgi-bin/certificate.cgi/302199
http://www.worldcommunitygrid.org/

Hors ligne

#3 Le 29/01/2007, à 17:07

glattering

Re : Majuscule au début des mots

salut;
tu fais appelles à ce qu'on appelle les expressions régulières (renseigne toi de ce côté);
Sinon, pour ce que j'en sais, tu cherches tous les espaces suivis d'une lettre minuscule et tu remplace le tout par un espace suivi de A-Z, donc ce que tu obtiens me semble cohérent avec ce que tu as écris (même si c'est pas le résultat recherché);
Désolé je ne connais pas très bien les expressions régulières donc je n'ai pas de solution à te donner.


Membre de l'APRIL - « promouvoir et défendre le logiciel libre » -

Hors ligne

#4 Le 29/01/2007, à 17:28

any

Re : Majuscule au début des mots

une reponse a cette question (donné par Doby) ce trouve sur ce post

http://forum.ubuntu-fr.org/viewtopic.php?id=92164

file='mon fichier.txt'
first=`echo "$file" | cut -c1`
first=`echo $first | tr [a-z] [A-Z]`
rest=`echo "$file" | cut -c2-0`
mv "$file" $first"$rest"

#5 Le 29/01/2007, à 17:36

sylvaing01

Re : Majuscule au début des mots

salut Any,

j'ai déjà testé ces lignes, mais çà ne fonctionne pas, il ne change que la première lettre du premier mot.

merci quand même.;)

Hors ligne

#6 Le 29/01/2007, à 17:42

any

Re : Majuscule au début des mots

ok lol j'avais pas vu que Fichier aussi devait etre en majuscule hmm

#7 Le 29/01/2007, à 17:55

any

Re : Majuscule au début des mots

bon c'est bourrin ;(

file='mon fichier.txt'

file1=`echo "$file" | cut -f1 -d ' '`
file2=`echo "$file" | cut -f2 -d ' '`

first1=`echo "$file1" | cut -c1`
first1=`echo $first1 | tr [a-z] [A-Z]`
rest1=`echo "$file1" | cut -c2-0`

first2=`echo "$file2" | cut -c1`
first2=`echo $first2 | tr [a-z] [A-Z]`
rest2=`echo "$file2" | cut -c2-0`

file1=$first1"$rest1"
file2=$first2"$rest2"

echo $file1
echo $file2

mv "$file" $file1" $file2"

#8 Le 29/01/2007, à 22:52

sylvaing01

Re : Majuscule au début des mots

ok, merci Any, c'est très interessant, mais finalement, je suis partit sur un petit programme en c qui marche du tonnerre.

encore merci

Dernière modification par sylvaing01 (Le 29/01/2007, à 22:53)

Hors ligne

#9 Le 29/01/2007, à 23:40

any

Re : Majuscule au début des mots

oui c'est clair un petit prog en C
y a rien de tel smile

#10 Le 30/01/2007, à 00:03

Spalax

Re : Majuscule au début des mots

Ceci met des majuscule au début des mots du fichier donné en argument.

sed -e 's/^\([a-z]\)/\U\1/g' -e 's/ \([a-z]\)/ \U\1/g'

Pour l'appliquer au renommage, il suffit de faire :

mv "monFichier" "`echo monFichier | sed -e 's/^\([a-z]\)/\U\1/g' -e 's/ \([a-z]\)/ \U\1/g'`"

Et pour des renommages en masse :

ls -1 * | while read i
do
    mv "$i" "`echo $i | sed -e 's/^\([a-z]\)/\U\1/g' -e 's/ \([a-z]\)/ \U\1/g'`"
done

Dernière modification par Spalax (Le 30/01/2007, à 00:04)

Hors ligne

#11 Le 30/01/2007, à 02:14

any

Re : Majuscule au début des mots

bon juste pour le fun une version awk  big_smile

file="mon fichier au nom tordu sans majuscule.txt"
mv "$file" "`echo "$file"|awk '{ for (i=0; i<=NF; i++) sub(/^./, toupper(substr($i,1,1)), $i);  print $0 }'`"

#12 Le 30/01/2007, à 11:52

sylvaing01

Re : Majuscule au début des mots

ok merci les gars, c'est simpa, je vait essayer tout çà.

En tout cas, pour une simple majuscule au début des mots, c'est vraiment pas une mince affaire.

bon, je finis ma version en C et je posterait le code, parce que çà reste quand même beaucoup plus rapide qu'un script ;-)

encore merci pour votre aide

Hors ligne

#13 Le 16/02/2014, à 00:55

diego25

Re : Majuscule au début des mots

Salut je suis dsl de déterrer ce poste mais je suis tomber dessus avec google et comme
personne n'a donner de solution avec rename , En cherchant j'ai réussi a trouver une solution,
donc je la poste au cas ou ça intéresse quel qu'un .

Ajouter des majuscule en masse :

Fichier test :

une belle image.jpg

Pour une majuscule au début de chaque nom de fichier :

rename 's/^([a-z])/uc $1/e' *

Résultat :

Une belle image.jpg

Et pour une majuscule au début de chaque mot de nom de fichier :

rename 's/^([a-z])/uc $1/e' *;rename 's/( [a-z])/ uc $1/ge' *

résultat :

Une Belle Image.jpg

Hors ligne

#14 Le 16/02/2014, à 02:10

nesthib

Re : Majuscule au début des mots

Mieux vaut tard que jamais, merci diego25 et bienvenue sur le forum.

Une solution plus compacte pour mettre en majuscule la première lettre de chaque mot :

rename -n 's/(^[a-z]| [a-z])/uc $1/eg' *

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#15 Le 16/02/2014, à 10:44

Spalax

Re : Majuscule au début des mots

Un peu différent :

rename 's/(\b|_)([[:alpha:]])/$1\u$2/g' *

Hors ligne