linux - texto - cómo realizar la operación grep en todos los archivos de un directorio
grep expresiones regulares (4)
Trabajando con xenserver, y quiero realizar un comando en cada archivo que está en un directorio, sacando algunas cosas de la salida del comando y anexándolo en un archivo.
Tengo claro el comando que quiero usar y cómo extraer las cadenas según sea necesario.
Pero lo que no tengo claro es cómo hago que ejecute este comando en cada archivo, pasando al siguiente, hasta que no se encuentren más archivos.
En Linux, normalmente uso este comando grep recursivo para un texto particular dentro de un directorio
grep -rni "string" *
dónde,
r = recursivo, es decir, buscar subdirectorios dentro del directorio actual
n = para imprimir los números de línea a stdout
i = búsqueda insensible a mayúsculas y minúsculas
Si quieres hacer varios comandos, puedes usar:
for I in `ls *.sql`
do
grep "foo" $I >> foo.log
grep "bar" $I >> bar.log
done
Use find. En serio, es la mejor manera porque entonces realmente puedes ver en qué archivos está operando:
find . -name "*.sql" -exec grep -H "slow" {} /;
Tenga en cuenta que -H es mac-specific, muestra el nombre del archivo en los resultados.
grep $PATTERN *
sería suficiente. Por defecto, grep saltaría todos los subdirectorios. Sin embargo, si desea grep a través de ellos, grep -r $PATTERN *
es el caso.