Buscar dentro de archivos
Esto salio de una conversación con Arturo (zeux0r), sobre un comando que busque dentro de los archivos salieron estos;
$> find -name *.html | xargs grep "title"
Lo que hace es buscar dentro de todos los archivos html, la palabra title dentro de los archivos
añadiendo un * al final podremos obtener la ruta y el archivo que contiene esa palabra:
$> find -name *.html | xargs grep title *
Nos arrojaría algo así:
$> find -name *.html | xargs grep title *
./index.html: 'a class="lightbox-image" rel="prettyPhoto[2]" href="{{image}}" title="{{title}}"' +
./index.html: 'img src="{{image_s}}" alt="{{title}}" /' +
>
*corregido quite “-r” gracias gunnar.
Muy bueno no? hay muchos comandos, ¿cual te sabes tú?
#Por gunnar
>$ find . -name '*.html' -exec grep -r title \{\} +
#Por GnuGet >$ grep -Hirn cadena_a_buscar .
#Por Gaspar Fernandez >$ egrep -R ‘loquequierobuscar’ *.html

Esta entrada fue creada un Sábado, julio , 2011
Sobre 









David Valdez
Esta forma es mas fácil:
grep -Hirn cadena_a_buscar .
Y ya, además de hacer lo que tu pusiste da un mejor output.
y yo soy mas fan de ACK, si puedes usarlo, lo recomiendo
http://betterthangrep.com/
julio 2, 2011 @ 20:12:
Gaspar Fernández
Yo siempre utilizo egrep:
egrep -R ‘loquequierobuscar’ *.html por ejemplo
julio 2, 2011 @ 20:17:
Gunnar
Un poco más seguro y eficiente: Evita el uso de xargs, usa más bien el argumento -exec de find. Además, resulta más fácil de leer, en mi siempre humilde opinión:
$ find . -name '*.html' -exec grep -r title \{\} +Como nota, te sugiero especificar *.html entrecomillado, para evitar sorpresas (por ejemplo, si en el directorio actual tienes algunos archivos llamados algo.html y subdirectorios con otros más, tu versión no reporta lo que haya dentro de los subdirectorios… Queda como ejercicio al lector explicar por qué)
Hay detallitos sintácticos que puedes querer consultar con man find, como el significado de las {} o la diferencia entre especificar + o ;, que a veces no hace demasiada diferencia pero a veces la hace tremenda
julio 2, 2011 @ 21:09:
Gunnar
A propósito… El switch “-r” de grep no tiene ningún sentido como lo presentas!
julio 2, 2011 @ 21:10:
Rafael Bucio
@Gunnar, gracias, me gusto un poco más el
…
grep -Hirnque puso @David, le estudiaré más al grep/find. gracias @Gasparjulio 3, 2011 @ 17:43:
Nephtalí Gómez A
Me agradó mucho el artículo Bucio, especialmente cuando hay muchos archivos en dónde buscar y por supuesto, muchas cosas que encontrar.
Por cierto, ¿cómo puedes clasificar archivos por formato?
Saludos!
Nephtalí Gómez
julio 29, 2011 @ 16:08:
Last Dragon
El grep por si solo puede hacer eso, no hacia falta meter el find
agosto 12, 2011 @ 17:48:
fitorec
Agregaria la opcion -a por aqueño de las coicidencia en los archivos binarios, y el -s por aqueño de los permisos y errores.
grep -RHasni --color "title" .
Un detelle que vi es que emplean el -r yo tipicamente empleo el -R,las dos formas funcionan aunque creo que esta es la opción mas recomendada pero no estoy seguro.
Para mostrar solo los archivos con extensión html se me ocurre una tuberia:
grep -RHasni "title" . | grep -Ei "^.*.html :[0-9]+:\s"
Pero esto es nada eficiente ya que buscaria en todos los archivos y posteriormente haria el filtro, creo que si quieres excluir los archivos entonces se me ocurre algo como:
find . -iregex ".*\.html$" | xargs grep -Hani --color 'title'
L0L!, lo cual volvemos a practicamente lo mismo :¬P,jejeje, creo que cantinflie(despues de mucha jarada volvi al inicio), con el detalle que el match del find te es omiso al mayusculas/minusculas, y al ser una regex lo puedes extender si deseas definir algun patron mas expecifico en tus archivos p.e. otras extensiones.
enero 30, 2012 @ 3:48:
Malware en el servidor Web | El Blog de Rafael Bucio
[...] Sí se tiene acceso por ssh y eres fanático de la terminal puedes tratar con estos comandos para encontrar los archivos infectados ver post. [...]
abril 18, 2012 @ 8:55: