GNU/Linux >> Tutoriels Linux >  >> Linux

Comment nettoyer les extensions de fichiers ?

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


Linux
  1. Comment renommer un fichier sous Linux ?

  2. Comment rendre le fichier clairsemé?

  3. Comment ajouter du texte à un fichier ?

  4. Comment trier un fichier sur place

  5. Comment afficher le contenu du fichier de manière récursive ?

Comment créer un fichier Tar Gz

Comment décompresser (ouvrir) le fichier Gz

Comment tarer des types de fichiers spécifiques (extensions) dans un répertoire

Comment créer un lien symbolique vers un fichier sous Linux

Comment faire écho dans le fichier

Comment nettoyer les fichiers inutiles