Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

appliquer une commande à une série de fichiers

25 réponses
Avatar
miterrandir
Bonjour

J'ai une liste de fichiers contenus dans un répertoire auxquels je souhaite
passer une commande.

Exemple :

$ ffmpeg -i nom_aleatoire.flv nom_aleatoire.avi
$ ffmpeg -i nom_aleatoire2.flv nom_aleatoire2.avi
[...]

La commande converti le fichier flv existant en un fichier avi qu'elle créé.

Je cherche une petite recette pour automatiser ça svp. Dans le genre
convertir tous les fichiers flv en avi, vec le même nom..
merci d'avance.

5 réponses

1 2 3
Avatar
Nicolas S.
Thierry PINELLI a écrit:

for: for NAME [in WORDS ... ;] do COMMANDS; done
The `for' loop executes a sequence of commands for each member
in a


Qui est identique à:

for NAME [in WORDS ... ]
do
COMMANDS
done

Donc non, il ne manque rien.

--
Nicolas S.

Avatar
Stephane Chazelas
2007-09-29, 17:13(+02), Thierry PINELLI:
Alain Ketterlin wrote:

for f in *.flv; do
whatever $f $(dirname $f)/$(basename $f .flv).avi


il manque un ";" quelque part



Non.



"help for"

for: for NAME [in WORDS ... ;] do COMMANDS; done
The `for' loop executes a sequence of commands for each member in a


c'est pas moi qui le dit


Un saut de ligne remplace un ";" en shell (le contraire n'est
pas toujours le cas).

On peut aussi ecrire

for f in *.flv
do ...
done

D'ailleurs, on peut ecrire:

for i
do ...
done

ou

for i do ...; done

Mais

for i; do ...; done

ne marchera pas avec tous les shells et n'est d'ailleurs pas
POSIX.

--
Stéphane




Avatar
Alain Ketterlin
Thierry PINELLI writes:

for f in *.flv; do
whatever $f $(dirname $f)/$(basename $f .flv).avi


il manque un ";" quelque part


Non.


"help for"

for: for NAME [in WORDS ... ;] do COMMANDS; done
The `for' loop executes a sequence of commands for each member in a


c'est pas moi qui le dit


Ecoute Thierry, essaie, juste une fois, tu verras, ça marche pas mal.
Après, tu pourras comparer et choisir en connaissance de cause.

-- Alain.




Avatar
Marc
Alain Ketterlin wrote:

(au fait, GNU make preconise d'utiliser des regles de la forme

%.avi: %.flv

et pas .flv.avi, ce qui permet aussi de se passer de SUFFIXES)


Oui enfin ils préconisent ce qu'ils veulent, mais tant que la bonne
vieille syntaxe bien standard et portable suffit, il vaut mieux s'en
contenter. Après dans les cas où elle ne suffit pas, eh bien on n'a pas
le choix ;-)

Dans ce cas précis, on peut aussi faire un makefile complètement portable
en ne mettant que la règle .flv -> .avi, et utiliser le shell pour
appeler make avec comme argument la liste des fichiers .avi à générer.
Mais pour le coup ça devient lourd...

Avatar
Cyrille Lefevre
Alain Ketterlin wrote:

(au fait, GNU make preconise d'utiliser des regles de la forme

%.avi: %.flv

et pas .flv.avi, ce qui permet aussi de se passer de SUFFIXES)


Oui enfin ils préconisent ce qu'ils veulent, mais tant que la bonne
vieille syntaxe bien standard et portable suffit, il vaut mieux s'en
contenter. Après dans les cas où elle ne suffit pas, eh bien on n'a pas
le choix ;-)


tout dépend de quel point de vu l'on seplace, System V (.xxx.yyy) ou BSD
(%.yyy : %.xxx) si je ne me trompe.

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.


1 2 3