Bienvenue sur le forum technique internet et developpement Web - Experience Linux antispam antivirus, drivers etc. Pour me contacter, laissez un message sur le forum ou ecrivez moi sur alexandre arobase (contre le spam) inforeseau point com par exemple - Windev - Windev mobile - Windows
Forum technique developpement, GNU Linux et logiciels, de l'ours Index du Forum Forum technique developpement, GNU Linux et logiciels, de l'ours
Forum d'echange et d'entre aide sur le developpement, GNU Linux
 
 Sujets surveillésSujets surveillés   FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Forum developpement logiciel et Internet - Support informatique
 
Bienvenue sur le forum informatique et internet.
N'hésitez pas à poser vos questions, à vous inscrire pour participer.
Ce forum a pour but de partager une base de connaissance ouverte à tous couvrant l'informatique et les réseaux, antivirus et anti spywares. On a pas de pognon, de moins en moins même, mais on a des idées !
Dans l'esprit du logiciel libre, et de l'accès pour tous à la connaissance, vous pouvez copier les informations présentes dans ce forum. Il sera cool de votre part de placer un lien en retour vers ce forum, mais ça n'est pas obligatoire.
 


script bash pour renommer les fichiers pour ipod touch


 
Poster un nouveau sujet   Répondre au sujet    Forum technique developpement, GNU Linux et logiciels, de l'ours Index du Forum -> Ipod Touch
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
ronours
Site Admin


Inscrit le: 25 Fév 2007
Messages: 1204

MessagePosté le: Ven Mai 27, 2011 1:39 am    Sujet du message: script bash pour renommer les fichiers pour ipod touch Répondre en citant

Je pensais avoir placé ça en ligne mais non, alors encore un memo perso pour ne pas revenir 10 fois sur le même truc.

J'utilise un ipod jailbreaké car c'est la seule façon pour moi de l'utiliser avec mon ti linux (en gros, je veux qu'il monte comme une clé USB et pouvoir copier ma musique dessus, point barre).

Donc ça c'est fait, et j'utilise le logiciel "sound music pro" pour lire les fichiers depuis le système de fichiers.

Mais voilà, sound music pro semble ne pas digérer certains caractères dans les noms de fichier (essentiellement les parenthèses et les majuscules dans mon cas). Du coup, je n'allais pas me casser là tête à renommer tous les mp3 à la main, alors que le rip de mes CD audio m'a généré par défaut un nom du genre (Artiste-Album)_Titre_Piste.mp3 !

Donc, mission renommer tous les fichiers dans le dossier courant en une seule passe, petit bash rapido (vite fait, c'est pas de l'art pour le coup :p ), voilà mon compat_ipod.sh :

Code:
#!/bin/bash

#Ce script va renommer tout le contenu en virant les parentheses et tout passer en minuscules pour compat_ipod

for i in `ls *.mp3 *.MP3 2>/dev/null`; do

echo "Je traite : "$i;
#$i contient le nom du fichier qui m'interesse dans le dossier en cours
echo "Passage en minuscule : "
#echo $i|awk '{print tolower($0)}'
montitre=`echo $i|awk '{print tolower($0)}'`
echo ${montitre}
echo "Suppression des parentheses : "
#suppression des parentheses avec awk gsub
echo ${montitre}|awk '{gsub("[\\(|\\)]","",$1);print $1 }'
nouveautitre=`echo ${montitre}|awk '{gsub("[\\\(|\\\)]","",$1);print $1 }'`

echo "Renommage du fichier $i en ${nouveautitre} : "
if [ ! -z "${nouveautitre}" ]; then
        mv $i ${nouveautitre}
        #echo "renommage"
fi
done


voilà, oui on aurait pu utiliser find pour faire ça dans tous les sous dossiers, je vous laisse faire un mix entre ce post et ça :
http://blog.inforeseau.com/2010/10/rechercher-un-fichier-sous-gnu-linux-la-commande-find-et-autre

voilà Very Happy
_________________
Soutenez le logiciel libre, adhérez à la FSF (Europe ou Monde) , voir lien en pied de page.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
ronours
Site Admin


Inscrit le: 25 Fév 2007
Messages: 1204

MessagePosté le: Dim Juil 31, 2011 4:21 pm    Sujet du message: Répondre en citant

Petite amélioration du script, qui traite maintenant le renommage des fichiers de manières récursive.

En gros, on place le script suivant compat_ipod_name_v2.sh dans la racine de départ dans laquelle se trouvent nos fichiers mp3, qu'il y ait un ou plusieurs sous dossier, ça va renommer TOUS les fichiers pour les rendre compatibles.

On le lance en tapant : sh compat_ipod_name_v2.sh


Voila le script :
Code:
#!/bin/bash

#Ce script va renommer tout le contenu en virant les parentheses et tout passer en minuscules et remplacer les espaces par des underscores pour compat_ipod

#recherche tous les fichiers contenant .mp3 ou .MP3 dans leur nom, et copie la liste dans le fichier list_found.txt
find ./ -type f -name '*.mp3' -o -name '*.MP3'>list_found.txt
#Pour chaque ligne i (du fichier list_found.txt passé en input apres done - voir plus bas)
while read i; do

echo "Je traite : "$i;
#$i contient le nom du fichier qui m'interesse avec le chemin relatif depuis le dossier en cours

#Contient le chemin complet, j'extraie le path+fichier
chemin=`dirname "${i}"`
fichier=`basename "${i}"`
echo "Passage du titre en minuscule : "
#echo $i|awk '{print tolower($0)}'
montitre=`echo $fichier|awk '{print tolower($0)}'`
echo ${montitre}
fichier=${montitre}
echo "Suppression des espaces :"
#suppression des espaces sur le nom du fichier uniquement avec awk gsub
echo "${fichier}"|awk -F "\t" '{gsub(/ /,"_",$1);print $1 }'
#On note que j'utilise -F "\t", qui signifie que la tabulation est le séparateur de champs! sinon par défaut c'est l'espace !
#Du coup, awk ne traite que le début du nom, en s'arretant a l'espace qu'il considère comme séparateur.
#Je choisi la tabulation car a priori aucun de mes fichiers ne contient de tabulation dans son nom !
nouveaufichier=`echo "${fichier}"|awk -F "\t" '{gsub(/ /,"_",$1);print $1 }'`

echo "Suppression des parentheses : "
#suppression des parenthese avec awk gsub
#(meme histoire que plus haut pour le separateur, meme si ca n'est plus nécessaire, car les espaces sont supprimés juste avant ;) )
echo "${nouveaufichier}"|awk -F "\t" '{gsub("[\\(|\\)]","",$1);print $1 }'
nouveautitre=`echo "${nouveaufichier}"|awk -F "\t" '{gsub("[\\\(|\\\)]","",$1);print $1 }'`

echo "Renommage du fichier $i en ${chemin}/${nouveautitre} : "
#Par securite je m'assure que la variable titre n'est pas vide, avec la commande mv, un peu de prudance est nécessaire !
if [ ! -z "${nouveautitre}" ]; then
   mv "$i" "${chemin}/${nouveautitre}"
   echo "renommage ${chemin}/${nouveautitre}"
fi
done < list_found.txt

_________________
Soutenez le logiciel libre, adhérez à la FSF (Europe ou Monde) , voir lien en pied de page.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Forum technique developpement, GNU Linux et logiciels, de l'ours Index du Forum -> Ipod Touch Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Visitez aussi : Photos pour tous - Lezactus - Actualites et articles en ligne - Le forum du scrapbooking
Vous pouvez copier les messages partiellement sous reserve de mettre un lien vers la source sur ce forum - Edité et géré par Alexandre BLANC - [FSF Associate Member]