Renommage de répertoires en masse

zadig99 -  
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
Je fais appel aux spécialistes concernant l'écriture d'un script qui me permettrait de modifier en masse la premiére lettre (minuscule en majuscule) de tous les sous-répertoires situés dans un répertoire spécifique.
Merci à tous.
A voir également:

3 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Il n'y a qu'un niveau de sous-répertoires ou plusieurs ?
Un niveau ?
le_rep/
|-- tata
|-- titi
|-- toto
|-- toutou
`-- tutu
Ou plusieurs ?
rep/
|-- tata
|   |-- titi
|   `-- tutu
`-- toto
    |-- titi
    `-- tutu
0
zadig99
 
Bonjour,
J'ai plusieurs niveaux de sous repertoires à renommer.
Merci.
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Une solution :
$ tree rep/
rep/
|-- tata
|   |-- titi
|   `-- tutu
`-- toto
    |-- titi
    `-- tutu

6 directories, 0 files

$ find rep/* -depth -type d -exec bash -c 'mv $1 $(echo $1 | sed "s#\(.*/\)\(.\)\(.*\)#\1\u\2\3#")' _ {} \;

$ tree rep/
rep/
|-- Tata
|   |-- Titi
|   `-- Tutu
`-- Toto
    |-- Titi
    `-- Tutu

6 directories, 0 files

$
;-))
0
zadig
 
Merci Jipicy,
Je teste ça dés demain matin(c'est pour mon boulot) et je te donne des nouvelles, mais en attendant le résultat et afin de ne pas mourir idiot, pourrais-tu me traduire à partir de la substitution ?
Cdlt.
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
s#\(.*/\)\(.\)\(.*\)#\1\u\2\3#"


s
La commande de substitution

#
Le délimiteur de début. On définit le signe dièse (#) comme délimiteur à la place du slash (/) le délimiteur par défaut

\(.*/\)
1ère sous-expression qui englobe tout (.*) jusqu'au dernier slash (/), qu'il y en est 1, 2, 3, ou plus

\(.\)
2nd sous-expression matchant un caractère (.). Le 1er après le dernier slash

\(.*\)
3ème sous-expression englobant tout ce qui reste

#
Délimiteur partie gauche/droite (#motif#chaine de remplacement#)

\1
Correspond à la 1ère sous-expression

\u
Met le caractère qui suit en majuscule (u pour upper)

\2
Correspond à la 2ème sous-expression (la caractère seul)

\3
Correspond à la 3ème sous-expression

#
Délimiteur de fin

0