Dans le terminal, comment répéter plusieurs fois une commande sur différents fichiers?


13

Dans le terminal, je veux utiliser ffmpeg2theora pour convertir tous les fichiers .MOV d'un certain répertoire en fichiers .ogv. Cependant, ce qui suit ne fonctionne pas:

ffmpeg2theora *.MOV

Existe-t-il un bon moyen de répéter une commande plusieurs fois sur différents fichiers?

Merci!

Réponses:


20

Si vous utilisez le shell par défaut (bash), vous pouvez utiliser ce qui suit:

for file in *.MOV; do ffmpeg2theora "$file"; done

5
Cela est plus susceptible de fonctionner sans les barres obliques:for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
frabjous

oui, vous avez absolument raison, j'ai corrigé ma réponse.
Marcel Stimberg

1
Vous pouvez également définir l' nocasegloboption bash pour faire correspondre les extensions de fichiers en minuscules et en majuscules à des casse mixtes.
enzotib

Je vous remercie! Je n'ai jamais utilisé bash auparavant mais ça a l'air vraiment utile. (Il est temps pour moi d'aller apprendre!)
Alan C

11

find . -iname '*.mov' -exec ffmpeg2theora '{}' \;

Pour limiter la profondeur de récursivité, vous pouvez ajouter -maxdepth 1avant-exec


2
Juste pour indiquer la différence entre cette réponse et ma réponse: L'utilisation de find recherchera également les fichiers dans les sous-répertoires, la for file in *.MOVsolution ne cherchera que dans le répertoire courant.
Marcel Stimberg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.