Renommage de répertoires en masse
zadig99
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
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.
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.
Configuration: Windows XP Firefox 1.5.0.12
3 réponses
-
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 -
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 $;-))
-
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