Conseil pour un script.

Le
Dominique
Bonjour,

Je suis une véritable quiche en scripts. Il est vrai que je ne prends
pas le temps d'apprendre

Soit un répertoire dans lequel j'ai une quarantaine de fichiers vidéos DV.

Je voudrais les convertir en mpeg avec ffmpeg de cette manière :

ffmpeg -i nom_du_fichier.dv nom_du_fichier.mpeg, ligne de commande qui
fait exactement ce que j'attends.

Je devrais avoir un script qui ressemblerait à quelque chose comme ça :

#!/bin/bash
for i in *.dv
do
ffmpeg -i $i ????.mpeg
next

Je ne sais pas remplacer les ???? par nom_du_fichier. J'ai testé %f.mpeg
mais ça ne paraît pas être ça.

Si vous pouviez m'aider, ça me dispenserait de m'infuser tous les
fichiers à la main

Merci et bon 1er mai,

--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Tonton Th
Le #24442971
On 05/01/2012 11:15 AM, Dominique wrote:

#!/bin/bash
for i in *.dv
do
ffmpeg -i $i ????.mpeg
next

Je ne sais pas remplacer les ???? par nom_du_fichier. J'ai testé %f.mpeg
mais ça ne paraît pas être ça.



$ man basename

--

Nous vivons dans un monde étrange/
http://foo.bar.quux.over-blog.com/
Dominique
Le #24443011
Le 01/05/2012 11:23, Tonton Th a écrit :
On 05/01/2012 11:15 AM, Dominique wrote:


$ man basename




Merci pour basename que je ne conaissais pas.

basename nom_fichier.dv .dv

me donne bien en sortie nom_fichier

Mais comment récupérer la sortie dans une variable pour la réinjecter
dans mon script ? Mes tentatives de redirection avec > nom ne me donnent
rien.



--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Francois Lafont
Le #24443071
Bonjour,

Le 01/05/2012 11:46, Dominique a écrit :

$ man basename




Merci pour basename que je ne conaissais pas.

basename nom_fichier.dv .dv

me donne bien en sortie nom_fichier

Mais comment récupérer la sortie dans une variable pour la réinjecter
dans mon script ? Mes tentatives de redirection avec > nom ne me donnent
rien.



Comme ça :

nom="$(basename nom_fichier.dv .dv)"
echo "$nom"


--
François Lafont
Dominique
Le #24443121
Le 01/05/2012 12:08, Francois Lafont a écrit :


Comme ça :

nom="$(basename nom_fichier.dv .dv)"
echo "$nom"



Bon, j'ai réussi avec ce script

#!/bin/bash
for i in *.dv
do
nom="$(basename $i .dv)"
ffmpeg -i $i $nom.mpeg
done

J'obtiens bien, avec en entrée, fichier.dv, une sortie fichier.mpeg
parfaitement reconnue par ffdiaporama (que je vous conseille...)

Merci à tous pour le coup de main et bonne journée,


--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Luc.Habert.00__arjf
Le #24443111
Tonton Th :

Je ne sais pas remplacer les ???? par nom_du_fichier.


$ man basename



Pitié! Ça fait des milénaires que les shells supportent ${i%.*}.
Francois Lafont
Le #24443181
Si jamais les noms contiennent des espaces (ce qui n'a pas l'air d'être
ton cas), alors, il faut encadrer les variables de doubles quotes. Par
exemple, au lieu de ça :

Le 01/05/2012 12:40, Dominique a écrit :

nom="$(basename $i .dv)"
ffmpeg -i $i $nom.mpeg



Écrire plutôt ça :

nom=$(basename "$i" .dv)
ffmpeg -i "$i" "$nom.mpeg"

Comme ça, un nom avec des espaces ne fera pas planter le script.
À+

--
François Lafont
gigiair
Le #24443161
(Luc Habert) disait le 05/01/12 que :

Tonton Th :

Je ne sais pas remplacer les ???? par nom_du_fichier.


$ man basename



Pitié! Ça fait des milénaires que les shells supportent ${i%.*}.



Un Milénaire, c'est 1,852 années ?

--
JJR.
Dominique
Le #24443321
Le 01/05/2012 12:47, Francois Lafont a écrit :
Si jamais les noms contiennent des espaces (ce qui n'a pas l'air d'être
ton cas), alors, il faut encadrer les variables de doubles quotes. Par
exemple, au lieu de ça :

Le 01/05/2012 12:40, Dominique a écrit :

nom="$(basename $i .dv)"
ffmpeg -i $i $nom.mpeg



Écrire plutôt ça :

nom=$(basename "$i" .dv)
ffmpeg -i "$i" "$nom.mpeg"

Comme ça, un nom avec des espaces ne fera pas planter le script.



Je te remercie mais, comme tu le fais remarquer, mes noms de fichiers ne
sont composés que de azAZ09_- Pas d'espace ni de ponctuation ni de
caractères accentués.

Par contre, je retiens les double quottes pour quand je devrais
travailler sur les fichiers de ma fille qui est sous XP et qui raconte
sa vie dans les noms de fichiers :-)

Bon après-midi,

--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Dominique
Le #24443311
Le 01/05/2012 12:44, Luc Habert a écrit :
Tonton Th :

Je ne sais pas remplacer les ???? par nom_du_fichier.


$ man basename



Pitié! Ça fait des milénaires que les shells supportent ${i%.*}.



Et comment fonctionne ce filtre ? Je ne suis pas bon avec ça !

--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Francois Lafont
Le #24443411
Le 01/05/2012 13:48, Dominique a écrit :

Je ne sais pas remplacer les ???? par nom_du_fichier.


$ man basename



Pitié! Ça fait des milénaires que les shells supportent ${i%.*}.



Et comment fonctionne ce filtre ? Je ne suis pas bon avec ça !



Comme ça :

i="/home/francois/Bureau/test.txt"
nom="${i%.*}"
echo "$nom"

--
François Lafont
Publicité
Poster une réponse
Anonyme