1Renommer
Commençons par la commande, par exemple pour renommer des fichier .php3 en .php, on aurait:
ls -d *.php3 | sed 's/\(.*\).php3$/mv "&" "\1.php"/' | sh
qu’est ce qui se passe vraiment?
- ls -d *.php3 liste tous les fichiers avec l’extension php3 dans le dossier. Cette liste est piped à la deuxième commande,
- sed ’s/\(.*\).php3$/mv "&" "\1.php"/’. sed est un outil pour éditer des flux (stream). Ici le flux est la liste de fichiers. l’argument qu’on passe à sed: ’s/\(.*\).html$/mv "&" "\1.php"/’ permet de renommer les fichiers:
- s dit à sed de remplacer les chaînes de caractères dans le stream,
- (.*\).php3$ est une expression régulière pour dire que l’on veut remplacer les chaînes nimportequelnom.php3,
- mv "&" "\1.php" est la chaîne qui sera mis à la place. \1 sera remplacé par le nom du fichier dans la chaîne de base (sans extension). & sera remplacé par la portion de chaîne qui est traité par l’expression (tout le nom de fichier, avec l’extension),
- | sh prend la sortie de sed et l’exécute (sh est l’interpréter shell). Ainsi, pour chaque fichier de la liste, on exécutera la commande mv nimportequelnom.php3 nimportequelnom.php.
2Presque tout
En fait, ce truc peu être utiliser pour beaucoup de tâches massives. La seule partie qu’il faut changer, c’est la chaîne de remplacement passée à sed.
Donc, si l’on voulait remplacer toutes les chaînes php3 par php dans un fichier, on utiliserait l’expression:
sed 's/\.php3/.php/g'
Pour le faire de façon massive, on utilisera la série de commande:
ls -d *.php3 | sed 's/\(.*\).php3$/sed "s\/\\.php3\/.php\/g" "&" > \1.php' | sh
remarqué que vous devez échapper tous les / et \. Et que dans le même temps, on renomera les fichiers .php3 en .php![]()



