Lire un intervalle de fichiers avec mplayer


Il m'arrive d'avoir une centaine de fichiers avi à regarder. Seulement lorsque je commençe une lecture et que je m'arrête après une trentaine de fichiers, la reprise du visionnage est toujours un moment délicats. En effet le lance la lecture de tous fichiers avec "mplayer *" et j'abusais du saut de fichier pour en arriver là où je m'en étais arrêté.

Autant vous dire que la perte de temps était proportionnelle à l'énervement occasionné. ^^

Bref, dans un coup de ras le bol j'ai pris le taureau par les cornes, et j'ai recherché comment lancer une lecture à partir d'un intervalle de fichier. Et c'est dans le manuel bash que j'ai trouvé cette manipulation (fonctionne aussi avec zsh).

La situation

Elle est très simple. Vous avez une succession de fichiers dont les noms sont identiques à part le numéro de l'épisode:
toto.S01E01.LoL.deOuf.SCRN.avi
toto.S01E02.LoL.deOuf.SCRN.avi
toto.S01E03.LoL.deOuf.SCRN.avi
...
...
toto.S01E95.LoL.deOuf.SCRN.avi
toto.S01E96.LoL.deOuf.SCRN.avi
toto.S01E97.LoL.deOuf.SCRN.avi
Supposons que l'on commence à regarder les épisodes 1 à 50. Lorsqu'on va relancer la lecture plus tard, ce sera franchement long de sauter 50 épisodes en tenant en compte la latence de mplayer dans le saut de fichiers.

La manipulation

Elle est très simple: il est possible d'indiquer un intervalle de nombres entiers ou de caractères simples tel que le bash ou zsh reconstituent les maillons intermédiaires. La synthaxe est la suivante:
{x..y}

Ce qui nous donnerait en exemple:
$ echo {1..15}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$ echo fichier{1..5}.ext
fichier1.ext fichier2.ext fichier3.ext fichier4.ext fichier5.ext

Maintenant, supposons que la numérotation de nos fichiers soit précédée d'un '0' pour les nombres inférieurs à 10. Dans ce cas, pas de problème car il est possible d'inclure le zéro dans la liste à générer (merci à Nicofo pour l'astuce). Par exemple, voici la solution sans le zéro, puis avec:
$ echo fich{8..11}
fich8 fich9 fich10 fich11

deviendrait alors

$ echo fich{08..11}
fich08 fich09 fich10 fich11

Maintenant il suffit de lancer nos vidéos et le tour est joué:
mplayer toto.S01E{50..97}.LoL.deOuf.SCRN.avi

ou encore

mplayer toto.S01E{50..97}*

Le mot de la fin

Je n'avais jamais entendu parler de cette manipulation jusqu'ici. J'espère que ce billet répondra aux besoins similaires de certains.
Cette astuce est généralisable à toutes application lancée en ligne de commande, comme par exemple la visionnage de photos, la lecture de sons, et même la copie ciblée ou le déplacement de fichiers.

Liens utiles

Vus : 1288
Publié par PPmarcel : 21