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
-Hno es necesario.cat.catsignifica concatenar. Si concatena todos los archivos juntos antes de pasarlosgrep,grepvea 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"Res buscar de forma recursiva (siguiendo enlaces simbólicos)ies hacerlo insensible a mayúsculas y minúsculasles solo para enumerar el nombre de los archivos.entonces responder a su pregunta
grep -l '75447A831E943724DD2DE9959E72EE31' *.htmlservirá, 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
grepsi 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 dewhileloop conifdeclaración. Aquí hay un ejemplo en el que la lista de nombres de archivos proviene de una estructurafind+ muy utilizadawhilepara un análisis seguro de los nombres de archivos.fuente
grepla--includebandera.