necesita buscar algo en todo el contenido
Estoy intentando:
find . | xargs grep word
Me sale el error:
xargs: cita sin terminar
¿Cómo lograr esto?
xargs
espera la entrada en un formato que ningún otro comando produce, por lo que es difícil de usar de manera efectiva. Lo que está mal aquí es que tiene un archivo cuyo nombre debe ser citado en la entrada xargs
(probablemente conteniendo un '
).
Si su grep admite la opción -r
o -R
para la búsqueda recursiva, úsela.
grep -r word .
De lo contrario, use el -exec
primario de find
. Esta es la forma habitual de lograr el mismo efecto que xargs
, excepto sin restricciones en los nombres de archivo. Las versiones razonablemente recientes de le find
permiten agrupar varios archivos en una sola llamada al comando auxiliar. Pasar /dev/null
a grep
garantiza que mostrará el nombre del archivo delante de cada coincidencia, incluso si se llama en un solo archivo.
find . -type f -exec grep word /dev/null {} +
Las versiones anteriores de find
(en sistemas más antiguos o OpenBSD, o utilidades reducidas como BusyBox) solo pueden llamar al comando auxiliar en un archivo a la vez.
find . -type f -exec grep word /dev/null {} \;
Algunas versiones de find
y xargs
tienen extensiones que les permiten comunicarse correctamente, utilizando caracteres nulos para separar los nombres de archivo para que no se requiera una cita. En estos días, solo OpenBSD tiene esta característica sin tenerla -exec … {} +
.
find . -type f -print0 | xargs -0 grep word /dev/null
/dev/null
. Es una molestia cuando el formato de salida puede variar, dependiendo de cuántos archivos coincidan ... gracias.Supongo que te refieres a la primera opción
grep recursivo, para buscar contenido dentro de archivos
Es recursivo, para buscar archivos que coincidan
fuente
Si tiene las herramientas de GNU (lo que hace si la etiqueta de Linux es precisa), puede usar
-print0
y-0
evitar los problemas habituales de las citas:fuente
También ACK , que está diseñado para saltar directorios especiales como
.svn
,.git
y tal. Es una herramienta diaria para desarrolladores.Está bastante cerca de grep para los interruptores comunes.
Ex. :
Paquete
ack-grep
en Debian y Me gusta de Debian.fuente
En el directorio actual puede usar grep:
fuente
Creo que quieres encontrar una cadena en los archivos
Tratar
find . -name "*" | xargs grep -l "string"
fuente