Renommage de répertoires en masse
zadig99
-
jipicy Messages postés 41342 Statut Modérateur -
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.
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:
- Renommage de répertoires en masse
- Renommage de fichier - Guide
- Renommer des fichiers en masse - Guide
- Dispositif de stockage de masse usb - Télécharger - Pilotes & Matériel
- Stockage de masse - Forum Disque dur / SSD
- Pourquoi certains contacts disparaissent de mon répertoire - Accueil - Guide Android
3 réponses
Salut,
Il n'y a qu'un niveau de sous-répertoires ou plusieurs ?
Un niveau ?
Il n'y a qu'un niveau de sous-répertoires ou plusieurs ?
Un niveau ?
le_rep/ |-- tata |-- titi |-- toto |-- toutou `-- tutuOu 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
J'ai plusieurs niveaux de sous repertoires à renommer.
Merci.