6V8 - Production of my Mind

Home page > For your Computer > Renommer des fichiers en masse avec linux

Renommer des fichiers en masse avec linux

 

Il n’est pas rare pour un débutant d’essayer la commande mv *.aaa *.bbb, mais elle ne marchera malheureusement pas.

Une solution un peu plus complexe utilisant le pipe (|) et sed est présentée ici.

la puissance du shell | 29 April 2004, by Mortimer

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 .phpsourire

Date of online publication: 29 April 2004
last-update: 13 May 2004
All the versions of this article:
Forum messages 14
visits:
28891

Creative Commons Attribution NonCommercial ShareAlike 2.5  License
 

14 Forum messages

 

The most read articles

 
©
Pierre Andrews
York, uk
| Site Map | Site created with SPIP 1.9.2c [10268] | RSS | template by IZO, Mortimer. | clicky stats
the recent the published first
the recent the published first
the recent the published first
the recent the published first
the recent the published first