Estoy tratando de ejecutar grep contra una lista de unos cientos de archivos:
$ head -n 3 <(cat files.txt)
admin.php
ajax/accept.php
ajax/add_note.php
Sin embargo, aunque estoy buscando una cadena que sé que se encuentra en los archivos, lo siguiente no busca los archivos:
$ grep -i 'foo' <(cat files.txt)
$ grep -i 'foo' admin.php
The foo was found
Estoy familiarizado con la -f
bandera que leerá los patrones de un archivo. Pero, ¿cómo leer los archivos de entrada ?
Había considerado la horrible solución de copiar los archivos a un directorio temporal, ya que cp
parece admitir el <(cat files.txt)
formato, y a partir de ahí agrupar los archivos. Shirley hay una mejor manera.
fuente
while
podría recibir las líneas de file.txt como tal.while
no está recibiendo exactamente las líneas del archivo,read
está haciendo eso;while
solo nos deja hacer eso en un bucle. El ciclo finaliza cuandoread
falla (es decir, devuelve un código de retorno distinto de cero), normalmente debido a que se alcanza el Fin del archivo.IFS= read -r filename
,read filename
es otra cosa.-H
es una extensión GNU. Te estás perdiendo un poco--
.