viernes, 23 de julio de 2010

Barajita premiada (#11) - ejecutar un comando para cada línea de un archivo

Típico que tenemos en algún archivo un listado de nombres y queremos ejecutar un comando para cada una de las líneas del mismo. Por ejemplo: supongamos que tengo un directorio con un montón de archivos, pero quiero borrar sólo un subconjunto de los contenidos en éste. Entonces, podría copiar los nombres (uno por línea) dentro de un archivo y pedir que se ejecute el comando rm por cada línea... Esto no tiene sentido si el subconjunto está compuesto por 5 nombres o menos, pero si son más, seguro que sería de utilidad algo como:

$ for i in `seq 1 100`; do touch $i; done # generando archivos vacios
$ cat a_borrar # mostrando el archivo que contiene la lista de elementos a borrar
22
3
4
65
6
12
45
90
32
76
48
98
32
$ for i in `cat a_borrar`; do rm $i; done # borrando los archivos especificados



No hay comentarios:

Publicar un comentario