Soy un novato en Linux. Necesito buscar una cadena "string de prueba" en todos los archivos * .java que se encuentran en / home / user1 / (incluidas las subcarpetas). ¿Cómo puedo hacerlo en Linux a través del comando de shell?
Ha habido varias preguntas sobre archivos de búsqueda de
expresiones
una búsqueda rápida arrojó esta pregunta: superuser.com/questions/208271/... no es exactamente lo que estás buscando, pero en lugar de cp ejecutivo, podrías
atrapar
Puedo enumerar el archivo que tiene la extensión con find / home / user1 -name * .java ¿Cómo usar grep en eso?
darthvader
Respuestas:
23
La forma más fácil es usar las características de GNU grep:
grep -r --include '*.java' teststring /home/user1
Si alguna vez usa otra variante de Unix que no tiene GNU grep, aquí hay una forma portátil:
En general, se debe utilizar -print0y -0cuando las tuberías finden xargsque funcione correctamente con archivos que pueden tener espacios o saltos de línea en sus nombres:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
Respuestas:
La forma más fácil es usar las características de GNU grep:
Si alguna vez usa otra variante de Unix que no tiene GNU grep, aquí hay una forma portátil:
fuente
grep -r teststring .
usando ack simplemente escribes:
cd /home/user01 && ack --java teststring
fuente
ack --java teststring /home/user01
Para este ack aka ack-grep es la aplicación asesina en mi mente;)
Puede
ack some_string /in/path_y
encontrar some_string en path_y O más simpleack some_other_string
encontrar some_other_sting en el directorio actual.fuente
Lo encontré. Publicarlo ya que podría ayudar a alguien.
Corrija si hay alguna manera mejor.
fuente
-print0
y-0
cuando las tuberíasfind
enxargs
que funcione correctamente con archivos que pueden tener espacios o saltos de línea en sus nombres:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
fuente