En la terminal, ¿cómo puedo repetir un comando varias veces en diferentes archivos?


13

En el terminal, quiero usar ffmpeg2theora para convertir todos los archivos .MOV en un determinado directorio a archivos .ogv. Sin embargo, lo siguiente no funciona:

ffmpeg2theora *.MOV

¿Hay una buena manera de repetir un comando varias veces en diferentes archivos?

¡Gracias!

Respuestas:


20

Si usa el shell predeterminado (bash), puede usar lo siguiente:

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

55
Es más probable que esto funcione sin las barras:for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
frabjous

Sí, tienes toda la razón, corrigí mi respuesta.
Marcel Stimberg

1
También puede configurar la nocaseglobopción bash para que coincida con las minúsculas, mayúsculas y las extensiones de archivo de mayúsculas y minúsculas.
enzotib

¡Gracias! Nunca he usado bash antes, pero parece realmente útil. (¡Es hora de que yo vaya a aprender!)
Alan C

11

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

Para limitar la profundidad de recursión, puede agregar -maxdepth 1antes-exec


2
Solo para establecer la diferencia entre esta respuesta y mi respuesta: el uso de find también buscará archivos en subdirectorios, la for file in *.MOVsolución solo buscará en el directorio actual.
Marcel Stimberg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.