Tengo un montón de archivos .html en un directorio. Quiero mirar a través de cada archivo y hacer coincidir un patrón (MD5). Todo eso es bastante fácil. El problema es que necesito saber en qué archivo se encontró la coincidencia.
cat *.html | grep 75447A831E943724DD2DE9959E72EE31
Solo devuelve el contenido de la página HTML donde se encuentra la coincidencia, pero no me dice el archivo en el que se encontró. ¿Cómo puedo obtener grep para mostrarme el nombre del archivo donde se encuentra mi coincidencia?
command-line
grep
Se mi amigo
fuente
fuente
Respuestas:
fuente
-H
no es necesario.cat
.cat
significa concatenar. Si concatena todos los archivos juntos antes de pasarlosgrep
,grep
vea solo un gran archivo de entrada estándar y no puede (salvo adivinar) devolverle información sobre los archivos individuales. ¿Ver?. Cyrus, ¿qué hay de explicar esto en la respuesta?Lo uso todo el tiempo para buscar archivos que contienen una cadena, RECURSIVAMENTE en un directorio (eso significa, atravesar cualquier sub sub sub sub carpeta)
grep -Ril "yoursearchtermhere"
R
es buscar de forma recursiva (siguiendo enlaces simbólicos)i
es hacerlo insensible a mayúsculas y minúsculasl
es solo para enumerar el nombre de los archivos.entonces responder a su pregunta
grep -l '75447A831E943724DD2DE9959E72EE31' *.html
servirá, pero puede hacerlogrep -Ril '75447A831E943724DD2DE9959E72EE31'
para buscar esa cadena, sin distinción entre mayúsculas y minúsculas, en cualquier archivo en cualquier subcarpetafuente
stdin
( grep: advertencia: búsqueda recursiva de stdin , cualquier entrada de stdin recursiva significaría :-). En otras palabras:grep -Ril 'texttofind' *
grep -RiH 'pattern'
muestra el nombre de los archivos y la línea coincidentePuedes probar esto
fuente
Alternativa a
Al hacer lo anterior, buscará recursivamente en la carpeta y subcarpetas e imprimirá la ruta del archivo ...
fuente
La respuesta publicada por Cyrus es absolutamente correcta y es The Right Way TM para hacerlo
grep
si solo necesitamos encontrar archivos . Cuando los nombres de archivo necesitan un análisis u operaciones adicionales en los nombres de archivo coincidentes, podemos recurrir al uso dewhile
loop conif
declaración. Aquí hay un ejemplo en el que la lista de nombres de archivos proviene de una estructurafind
+ muy utilizadawhile
para un análisis seguro de los nombres de archivos.fuente
grep
la--include
bandera.