Trabajando con xenserver, y quiero ejecutar 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 debo ejecutar este comando en cada archivo, pasando al siguiente, hasta que no se encuentren más archivos.

grep $PATTERN *.cpp *.h. Si necesita reglas más específicas para los archivos que deben seleccionarse, use elfindcomando (verifique la respuesta de Rob).grep -r x .resultados provienen de todos los archivos de todas las extensiones. Si corro,grep -r x *.scssno recibo ningún resultado.*.scssarchivos en el directorio actual pero en algún lugar más profundo en subdirectorios para que grep no busque en todos los archivos que desea. Debe usar la--includeopción para indicarle a grep que busque de forma recursiva archivos que coincidan con patrones específicos:grep -r x --include '*.scss' .(tenga en cuenta las comillas, evitan que el shell expanda el patrón). O simplemente usefind(vea la respuesta de Rob).En Linux, normalmente uso este comando para greps recursivamente para un texto en particular dentro de un directorio
dónde,
r = recursivo, es decir, buscar subdirectorios dentro del directorio actual
n = para imprimir los números de línea en stdout
i = búsqueda sin distinción entre mayúsculas y minúsculas
fuente
Usa find. En serio, es la mejor manera porque entonces realmente puedes ver en qué archivos está funcionando:
Tenga en cuenta que -H es específico de mac, muestra el nombre del archivo en los resultados.
fuente
xargslugar de usar-execesto será mucho más rápido, ya que-execgenera un nuevo proceso para cada grep, y la sobrecarga se vuelve significativa con una gran cantidad de archivos. Se aplican advertencias estándar sobre espacios en los nombres de archivoxargs.xargssintaxis.find . -iname "*.sql" -print0 | xargs -0 grep "slow"Para buscar en todos los subdirectorios, pero solo en tipos de archivo específicos , use grep con
--include.Por ejemplo, buscando recursivamente en el directorio actual, para texto en * .yml y * .yaml:
fuente
Si quieres hacer múltiples comandos, puedes usar:
fuente