J'ai un répertoire avec des fichiers .MP3 dont j'aimerais changer les extensions en .mp3. Quel est le moyen le plus simple de procéder ? Je pense quelque chose du genre :
find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/1.mp3/ ;
… bien que je sache que ce n'est pas tout à fait vrai. 🙂 La substitution n'est pas correcte et je ne sais pas comment utiliser à la fois un mv
et un sed
commande avec -exec
dans find
.
Aurais-je besoin d'un script bash pour cela ?
Réponse acceptée :
Voici une façon de procéder dans Bash :
for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done
J'ai utilisé echo
ici pour que la commande elle-même ne fasse rien d'autre qu'imprimer des paires de noms de fichiers. Si cette liste représente les modifications que vous souhaitez apporter, vous pouvez modifier echo
à quelque chose comme mv -i --
qui déplacera alors vos fichiers (et vous avertira avant de les écraser).
Brève explication :
Le for
parcourt chaque fichier correspondant à *
. Ensuite, nous déterminons si l'extension est déjà en minuscules, si c'est le cas, nous passons à autre chose, si ce n'est pas le cas, nous procédons à son déplacement (ou à son écho, selon le cas). Cela utilise les opérations de chaîne intégrées de Bash que vous pouvez lire ici :http://tldp.org/LDP/abs/html/string-manipulation.html