Ligne de commande

exemples de résolutions de problème sur des fichiers de Podcasts ( mp3 ) A Raccourcir les noms de fichiers pendant quelques temps, des fichiers de posdcasts ressemblaient à celui-ci: 11253-14.09.2009-ITEMA_20195661-0.mp3?c=musique&p=Histoire+de..._11253&l3=20090914&l4=&media_url=http%3A%2F%2Fmedia.radiofrance- podcast.net%2Fpodcast09%2F11253-14.09.2009-ITEMA_20195661-0.mp3 qui devait être renommé ainsi: 11253-14.09.2009-ITEMA_20195661-0.mp3 ( c'est à dire les 39 premiers caractères ) Notes: 1 shell : GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu) 2 alias treef='tree -aif' = arborescence des noms de fichiers dans un format facile pour le shell --- 0 LISTER LES FICHIERS "mp3": ( à partir de /home/user/Podcasts/ ) treef | egrep mp3.+mp3 1 VERIFICATION DU FILTRE (le 39 est-il toujours la formule valide ?): for i in $(treef | egrep mp3.+mp3) ; do ls -1 "$i" ; echo "${i::39}" ;done ( ne marche qu'à partir du répertoire courant ) 2 RENOMMER ( COMME AFFICHÉ par la commande ci dessus ) for i in $(treef | egrep mp3.+mp3) ; do mv -i "$i" "${i::39}" ;done ( ne marche qu'à partir du répertoire courant ) B COMPRESSER LES FICHIERS mp3 Sur l'ensemble des répertoires de Podcasts ( sélection par lien symbolique: FC_nom_compatible_POSIX ) Notes: 1 les répertoires de Podcasts ont des noms à trou, non compatible posix. certains fichiers ne nécessitents pas une qualité de type musicale, seule la compréhension des paroles me suffit ( informations, débats etc.. ) Les répertoires de ces émissions sont donc liés à des noms de répertoire qui commencent par FC_ et continuent dans un format posix: ln -s "France culture Le nom de l'émission" FC_Nom_de_l_emission Les émissions qui comportent de la musique ne sont pas liées. 2 reduire mp3 est un script qui applique la commande suivante,(réduction importante, qualité très médiocre ) après quelques vérifications, puis efface( ou déplace ) l'original: lame -a -f -b 32 --abr 16 --nohist "$gros.mp3" "$reduit.mp3" cd ~/Podcasts && for i in FC_* ; do echo $i; cd $i ; pwd && reduire_mp3 ./ ; cd .. ; pwd ;done OU: cd /mnt/BKP.. && OU: cd /home*podcasts && ---------- Utilisation avec le script "reduire_mp3" sur les podcasts de France Culture 4 commandes sur une seule ligne ( enchaînées par && ) 1 Explorer tous les répertoires ~/Podcasts/ 2 Renommer les mal nommés On peut remplacer mp3.+mp3 par "[?]" et bien d'autres regex . "mp3.+mp3" est un peu plus discriminant, donc plus sur. La fonction "${nom::39}" est très spécifique des noms actuels donnés par radio-france, ( Elle retient les 39 premiers caractères du nom ) 3 Explorer tous les répertoires ~/Podcasts/FC_*/ 4 réduire les mp3 des répertoires FC_*/ ( Après la phase de tests, il faudra supprimer les originaux sauvegardés dans ~/tmp/reduire_mp3.bkp/ ) cd ~/Podcasts && \ for i in $(treef | egrep mp3.+mp3) ; do mv -i "$i" "${i::39}" ;done && \ for i in FC_* ; do echo $i; cd $i ; pwd && reduire_mp3 ./ ; cd .. ; pwd ;done ; ---------------------------------------------------------------------------------- AFFICHER LES RÉPERTOIRES DE CETTE LISTE: NOMS LONGS: ./le_REPERTOIRE/un nom avec une suite abusive sans signe slash "/" ./France Culture - Les nv chemins de la connaissance/10467-17.09.2009-ITEMA_20196419-0.mp3?c=culture&p=France+Culture+-+Les+nv+chemins +de+la+connaissance_10467&l3=20090917&l4=&media_url=http%3A%2F%2Fmedia.radiofrance-podcast.net%2Fpodcast09%2F10467-17.09.2009-ITEMA_20196419-0.mp3 ./Histoire de.../11253-17.09.2009-ITEMA_20196472-0.mp3?c=musique&p=Histoire+de..._11253&l3=20090917&l4=&media_url=http%3A%2F% 2Fmedia.radiofrance-podcast.net%2Fpodcast09%2F11253-17.09.2009-ITEMA_20196472-0.mp3 ECHECS de dirname: dirname ne fonctionne pas ainsi: treef | egrep mp3.+mp3 | dirname dirname: opérande manquante treef | egrep mp3.+mp3 | xargs dirname dirname: opérande surnuméraire `Culture' dirname $(treef | egrep mp3.+mp3 ) dirname: opérande surnuméraire `Culture' for i in $(treef | egrep mp3.+mp3); do dirname $i ; done DIRNAME SEMBLE RÉUSSIR ainsi: dirname "$(treef | egrep mp3.+mp3 )" mais ne fait pas ce qu'on attend: l'affichage est identique sans dirname, l'affichage donne le nom entier Recette perso en attendant mieux: Extraire le répertoire: ( nom relatif au rep courant ) ( alias treef=tree -afi ) ( sed supprime à partir du 2ème "/" jusqu'à la fin "$" ) 19:31:54$ treef | egrep mp3.+mp3 | sed s/[/][^/]*$// Cela donne: ./France Culture - Les nv chemins de la connaissance ./Histoire de... ------------------------------------- Extraire le chemin+le début du nom de fichier (jusqu'au 1er mp3): treef | egrep mp3.+mp3 | sed s/mp3.*$/mp3/ treef | egrep mp3.+mp3 | sed s/mp3.*$/mp3/ : remplace la 1ère chaine mp3 et tout ce qui suit jusqu'à la fin, par la chaine mp3 = coupe tout ce qui suit la 1e chaine mp3 trouvée Ce qui donne: ./France Culture - Les nv chemins de la connaissance/10467-17.09.2009-ITEMA_20196419-0.mp3 ./Histoire de.../11253-17.09.2009-ITEMA_20196472-0.mp3 ------------------------------------- C Avant de lancer un travail de masse: PLACE UTILISÉE / PLACE LIBRE: du -sh /home/podcasts/ && du -sh /home/user/tmp/reduire_mp3.bkp/ && du -sh /mnt/BKP_Podcasts/ && df -h | egrep "home|mnt|Monté sur"