Renommer plusieurs fichiers simultanément sous Linux et Windows en ligne de commande
![Renommer plusieurs fichiers simultanément sous Linux et Windows en ligne de commande | webdevpro.net](https://webdevpro.net/wp-content/uploads/2015/03/thumb/shell_linux__700x400.png)
Je viens de recevoir des fichiers html réalisés par mon graphiste et je dois les intégrer en php.
La première chose à faire, avant de lancer le codage, est de changer l’extension html des fichiers par php.
S’il y a moins de 10 fichiers, faire le changement à la main est rapide. Mais s’il y a plus de 10 fichiers (en l’occurrence 50) à modifier, un petit script va faire l’affaire :
Sous Windows
Nous allons utiliser l’invite de commande et la commande MsDos ren :
Invite cmd
cd path/to/the/directory/contining/the/files REM echo > index.html && echo > index2.html && echo > index3.html && echo > index4.html # ligne facultative dir ren *.html *.php dir
Sous Linux
Nous allons utiliser le shell et la commande rename :
Shell
cd path/to/the/directory/contining/the/files # touch index.html index2.html index3.html index4.html # ligne facultative ls -l rename 's/\.html$/\.php/' *.html ls -l
La syntaxe sous Linux est plus compliquée que sous Windows…
Comment fonctionne la commande rename ?
remane perlexpr [files]
Après quelques recherches sur le net, et mes connaissances en Regex PHP, voilà ce qu’il faut déduire :
- perlexpr : il s’agit d’une expression régulière perl. Elle a la forme suivante s/expr1/expr2/[gi] :
- s : lance le regex en perl pour réaliser une Subtitution
- / : séparateur
- expr1 : il faut remplacer .html se trouvant obligatoirement à la fin du nom de fichier : \.html$
- / : séparateur
- expr2 : par .php (\.php)
- / : séparation de motif
- [gi] cette option non utilisée ici
- files : la liste des fichiers sur laquelle la commande rename doit intervenir *.html (ce qui est aussi un REGEX 🙂 )
La commande rename se lit donc dans l’ordre inverse :
rename 's/\.html$/\.php/' *.html
- pour tous les fichiers finissant par .html (le deuxième argument donné : *.html)
- tu vas effectuer une substitution en appliquant la règle décrite dans perlexpr : remplacer .html obligatoirement à la fin de la chaine de caractère par .php (le premier argument : ‘s/\.html$/\.php/’)
Autres idées sur le sujet :
- Mettre en minuscule les extensions pour les fichiers images
- mettre les dimensions des images dans le nom du fichier
- Réaliser un rename de manière recursive
- Remplacer les espaces par des tirets
- Remplacer les caractères accentués par des caractères non accentuées
- Réaliser rename avec find et mv