sábado, 11 de octubre de 2008

Ejecutar comandos linux sobre múltiples ficheros

Para ejecutar comandos masivamente sobre una lista de ficheros en linux se pueden combinar los comandos find y xargs.

find es bastante conocido, básicamente lo que hace es buscar archivos según los criterios que le indiquemos.

xargs coge una lista y ejecuta el comando que le pasemos a cada elmento de esa lista.

La sintaxis es la siguiente.

find . -name "*.txt" | xargs echo

Con eso listaríamos los ficheros con extensión txt.

find . -name "*.php" | xargs -I fichero cat fichero >> acumulado.php

El parámetro -I hace que podamos darle un nombre a la entrada del comando que queremos ejecutar para realizar operaciones más complejas.

find . -name "*.cpp" | xargs -t -I fichero mv fichero fichero.old

Al realizar operaciones masivas con ficheros es posible que cometamos algún error, para comprobarlo se puede utilizar el parámetro -t que hace que se indiquen en la salida todos y cada uno de los comandos que xargs ejecuta.

2 comentarios:

Anónimo dijo...

Sólo quería felicitarte por tu blog. Gran contenido, útil y conciso.
Un saludo

javiyu dijo...

Muchas gracias, me alegra saber que resulta de utilidad.
Un saludo.