¿Cómo pasar varios ficheros como I/O a mencoder?

Pues estaba probando a recomprimir unos cuantos cídeos que tengo por aquí para meterlos en un dvd y quiero pasarselos todos de golpe al mencoder sin tener que hacerlos uno a uno pero no veo la manera. Están todos en un mismo directorio, así que he conseguido meter los títulos en un fichero de texto con:
$ls- l | cat > prueba.txt

Pero ahora no se como indicarle a mencoder que los use. Supongo que sería hacer algún scriptillo y que con grep o sed se podrá hacer algo, pero no he visto la manera. No quiero renombrarlos así que sería:
$mencoder /ruta_origen/nombrefichero -o /ruta_destino/nombrefichero ...

Un saludo
Lo que necesitas es un for de bash, asi de simple. Te escribo un ejemplo:
for i in /ruta/a/videos/
do
   mencoder $i --patatin patatan
done


Eso si, en esa ruta mete solo los ficheros que quieras que mencoder procese

Saludos
Jodo que parida :P Si vieses la de paridas que se me han ocurrido hacer. A ver si aprendo ya un poco la sintaxis de bash. Gracias.

Un saludo
Pues no funciona :-| Me dice que no es ningún archivo de video conocido más o menos.
He puesto un echo $i antes del mencoder... y lo que da no es ningún archivo sino la ruta al directorio.

¿Alguna idea?
Pues se me ha ido un asterisco:
for i in /ruta/noseque/*

Saludos
Gracias, creo que ya funciona. Pongo como le he hecho por si a alguien le sirve, aunque es una tontería.
if [ $# != 2 ] ; then
echo "Modo de uso:"
echo
echo " ./recomprimir <ruta video origen> <ruta video destino>"
echo
exit 1
fi

cd $1
for i in *
do
        echo $i
        mencoder  "$1$i" -o "$2$i" -ovc lavc -lavcopts vcodec=mpeg4:
vhq:vbitrate=1000 -ofps 25,000000 -oac copy

done

Para que me coja como nombre del fichero de salida el mismo que a la entrada lo que he hecho es cambiar al directorio origen, así en i no está la ruta completa y lo puedo pasar como argumento junto con la ruta de destino a la salida. No se si es la mejor manera, pero es lo que se me ha ocurrido. :P

Gracias.

Un saludo.
Yo como soy muy bruto me hice un programa para arrejuntar los
archivos. (los concatena sin más)

Pero funciona [sonrisa]
¿Que quieres decir que los uniste todos en un sólo archivo?¿Con un cat ?XD
Si que eres bruto sí. :P

Un saludo.
¿con CAT se puede?

No yo me hice un programita en C [sonrisa]
jode [Ooooo]
$ cat video1 video2 >> videos
Menos propenso a bugs que el tuyo seguro :P

Un saludo
Hombre si es un program más sencillo que el mecanismo del chupete.

//#define __USE_LARGEFILE64

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

# define O_LARGEFILE   0100000

#define TAM_BUF



int main (int argc,char ** argv){
    int i,n;
    unsigned char buffer[TAM_BUF];
    FILE *f;
    int g;


    printf ("Salida  -> %s\n",argv[argc-1]);
    g = open (argv[argc-1], O_RDWR | O_CREAT | O_LARGEFILE);
    if (g<0){
      fprintf( stderr, "No se pudo crear %s\n", argv[argc-1]);

      exit( 1 );
   }
    for (i=1;i<(argc-1);i++){
   printf ("Leyendo -> %s\n",argv[i]);
   f = fopen (argv[i],"r");
   if (f==NULL){
      fprintf( stderr, "No se pudo abrir %s\n", argv[i]);
      close (g);
      exit( 1 );
   }
   n=fread (buffer,sizeof (unsigned char),TAM_BUF,f);
   while (n>0){
       //fwrite (buffer,sizeof (unsigned char),n,g);

       if( write( g, buffer , n) < 0 )
       {
      //fprintf( stderr, "\nwrite() error\n" );
      //fprintf( stderr, "error: %s\n",strerror(errno ) );
      fprintf( stderr, "No se pudo escribir\n" );
      close (g);
      exit( 1 );
       }


       n=fread (buffer,sizeof (unsigned char),TAM_BUF,f);
   }
   fclose (f);
    }


    close (g);
}


No se que fallo puede haber hay.
No se que fallo puede haber hay.

Ah, no sé, a mí no me digas que no tengo ni guarra de C :P. Me refería más que a la hora de hacerlo, es más fácil que te dejes alguna tontería en 20 líneas que en 1, no que vaya a funcionar mal una vez hecho. :)

Un saludo
11 respuestas