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"