Respuestas:
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
Supongo que te refieres a la primera opción
grep recursivo, para buscar contenido dentro de archivos
grep -R "content_to_search" /path/to/directory
Es recursivo, para buscar archivos que coincidan
ls -lR | grep "your_search"
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:
find . -type f -print0 | xargs -0 grep word
En el directorio actual puede usar grep:
grep -irl root .
Creo que quieres encontrar una cadena en los archivos
Tratar find . -name "*" | xargs grep -l "string"
/dev/null
. Es una molestia cuando el formato de salida puede variar, dependiendo de cuántos archivos coincidan ... gracias.