Script comparacion de archivos

Iniciado por piruloncio, 8 Junio 2010, 23:47 PM

0 Miembros y 2 Visitantes están viendo este tema.

piruloncio

Buenas a todos. No sé si me estoy dirigiendo al sitio del foro adecuado pero aquí está mi consulta.

Resulta que tengo que comparar el contenido de un fichero con el contenido de más de mil ficheros todos en formato txt (o sea, texto plano). En caso de que el contenido entre el primer fichero y el resto de los mil sea distinto debe generarme un nuevo fichero e ir añadiendo en este el nombre de todos los ficheros leidos que difieren.

Imaginad que tengo un fichero llamado "prueba.txt" que contiene la palabra "fichero" y tengo que ir comparando con "1.txt", "2.txt", "3.txt", etc...
en caso de que alguno tenga un contenido distinto de "fichero" me debe generar un nuevo fichero llamado "resultado.txt" el cual vaya almacenando los nombres de los ficheros de distinto contenido, por ejemplo "1.txt", "7.txt", etc...

¿Alguien podría ayudarme?

Gracias.

leogtz

¿En qué lenguaje?, ¿en qué sistema operativo?, ¿para qué quieres hacer eso?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

piruloncio

Pues la verdad estaba buscando la posibilidad de un bat para entorno Microsoft, o sea, un script bajo msdos, aunque no descarto la posibilidad de utilizar alguna aplicación.

Gracias por leerme.

piruloncio

El motivo por el cual necesito hacer esto es porque tengo una serie de logs de una gran cantidad de servidores y esos logs son identicos. La cuestión es que si por algún motivo alguno de los logs no es igual que el que utilizo como de plantilla pues necesito generar una alerta o como indico en la explicación que me vaya apareciendo en un fichero de texto por ejemplo.

Nanoc

Bajo msdos puedes usar la instruccion comp para comprarar dos ficheros en busca de diferencias, informate sobre como funciona.

en cuanto a lo del txt, si el resultado de comp es que son distintos usas echo "nombre el fichero" >resultado.txt. Con eso puedes escribir directamente en un fichero.

Espero haberte ayudado

piruloncio

Pues he intentado hacer pruebas y solo me compara un archivo con otro. Lo he probado con comp y con fc y no me dan la posibilidad de comprar un fichero con un grupo sin saber el nombre. La prueba la he hecho con esta línea:

comp 1.txt *.* /L >> resultado.txt

lo mismo con fc

y solo me compara el primer elemento 1.txt con el pripio 1.txt.

bizco

yo te diria que uses otro lenguaje de script con mas posibilidades, algo como python, tcl, perl.... o el que mas te guste.

TeKNo dUKe

Como dijo ctlon sería mejor que lo hagas en python o perl, personalmente para un script así elegiría python entre otras porque si mañana migras de entorno py es multiplataforma mientras que el .bat de windows te dejara de servir y tendrás que reprogramar.-

"Lucy is an artist. Lucy paints pictures of Barbara Streisand"

Nanoc

Nada nada, ni caso, hazlo en VB6 que tardas 2 minutos y funciona perfecto XD

Almacenas en un array el fichero a comparar y comparas un array con otro

leogtz

Con Batch se puede, solo que no saben utilizarlo.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com