Stephane, mi respuesta ( -maxdepth 1) fue escalable. Por ejemplo -maxdepth 2. No sé cómo describir la edición que hiciste como tal.
David Wilkins
no llegará a @stephane si no usa la @.
Braiam
44
Sí, lo siento, estoy de acuerdo en que mi edición fue demasiado intrusiva. Es posible que desee aclarar que that ( -maxdepth) no es una sintaxis portátil / estándar (solo GNU y algunos BSD). Además, no tiene sentido usar \;aquí (ejecute uno greppor archivo). Utilice grep -H foo {} +(específico de GNU) o grep foo /dev/null {} +(estándar) para asegurarse de que el nombre del archivo siempre se imprima. El equivalente estándar a -maxdepth 2seríafind . -path './*/*' -type d -prune -o -type f -exec ...
Stéphane Chazelas el
2
También tenga en cuenta que el suyo le dará mensajes de error para los directorios (incluso .cuando no le da el -mindepth 1), mientras que GNU grepno intentará leer los directorios con -r(se repite en ellos). Es posible que desee añadir un -d skipa grep(suponiendo grep de GNU) o mejor añadir ! -type da findo incluso mejor -type f(o -xtype fasumiendo GNU find) que es probable que no quiere grepleer archivos que no son regulares.
Stéphane Chazelas
44
Tiendo a usar grep -Hineste enfoque para poder ver el nombre de archivo y la línea en la que está ocurriendo.
-n
no recurrir en absoluto.Respuestas:
Usar
-n
parano-recurse
:grep
no es recursivo de forma predeterminada, y debe usar el-r
indicador solo si desea una búsqueda recursiva.Puede buscar en el directorio actual de la
grep
siguiente manera:fuente
Puede emparejar find con el argumento -exec. ejemplo:
Esto se puede escalar, es decir
-maxdepth 2
fuente
-maxdepth 1
) fue escalable. Por ejemplo-maxdepth 2
. No sé cómo describir la edición que hiciste como tal.-maxdepth
) no es una sintaxis portátil / estándar (solo GNU y algunos BSD). Además, no tiene sentido usar\;
aquí (ejecute unogrep
por archivo). Utilicegrep -H foo {} +
(específico de GNU) ogrep foo /dev/null {} +
(estándar) para asegurarse de que el nombre del archivo siempre se imprima. El equivalente estándar a-maxdepth 2
seríafind . -path './*/*' -type d -prune -o -type f -exec ...
.
cuando no le da el-mindepth 1
), mientras que GNUgrep
no intentará leer los directorios con-r
(se repite en ellos). Es posible que desee añadir un-d skip
agrep
(suponiendo grep de GNU) o mejor añadir! -type d
afind
o incluso mejor-type f
(o-xtype f
asumiendo GNUfind
) que es probable que no quieregrep
leer archivos que no son regulares.grep -Hin
este enfoque para poder ver el nombre de archivo y la línea en la que está ocurriendo.