Prueba
find /srv/www/*/htdocs/system/application/ -name "*.php" -exec grep "debug (" {} \; -print
Esto debería buscar recursivamente las carpetas bajo application para archivos con .php extensión y pásalos a grep .
Una optimización de esto sería ejecutar:
find /srv/www/*/htdocs/system/application/ -name "*.php" -print0 | xargs -0 grep -H "debug ("
Esto usa xargs para pasar todos los .php salida de archivos por find como argumentos para un solo grep comando; por ejemplo, grep "debug (" file1 file2 file3 . El -print0 opción de find y -0 opción de xargs asegúrese de que los espacios en los nombres de archivos y directorios se manejen correctamente. El -H opción pasada a grep asegura que el nombre del archivo se imprima en todas las situaciones. (Por defecto, grep imprime el nombre del archivo solo cuando se pasan varios argumentos).
De man xargs:
-0
- Los elementos de entrada terminan con un carácter nulo en lugar de un espacio en blanco, y las comillas y la barra diagonal inversa no son especiales (cada carácter se toma literalmente). Deshabilita la cadena de fin de archivo, que se trata como cualquier otro argumento. Útil cuando los elementos de entrada pueden contener espacios en blanco, comillas o barras invertidas. El GNU encuentra
-print0 La opción produce una entrada adecuada para este modo.
find ni siquiera es necesario para este ejemplo, uno puede usar grep directamente (al menos GNU grep ):
grep -RH --include='*.php' "debug (" /srv/www/*/htdocs/system/application/
y estamos reducidos a una sola bifurcación de proceso.
Opciones:
-R, --dereference-recursive Read all files under each directory, recursively. Follow all symbolic links, unlike -r.-H, --with-filename Print the file name for each match. This is the default when there is more than one file to search.--include=GLOB Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).--exclude=GLOB Skip any command-line file with a name suffix that matches the pattern GLOB, using wildcard matching; a name suffix is either the whole name, or any suffix starting after a / and before a +non-/. When searching recursively, skip any subfile whose base name matches GLOB; the base name is the part after the last /. A pattern can use *, ?, and [...] as wildcards, and \ to quote a wildcard or backslash character literally.