¿Cómo puedo contar la cantidad de archivos (en un directorio) que contienen una cadena dada como entrada en bash / sh?
19
grep -l "string" * | wc -l
buscará "cadena" en el contenido de todos los archivos en el directorio de trabajo y le dirá cuántos coinciden.
grep -lr "string" directory | wc -l
si no desea una búsqueda recursiva, puede usar la opción find con maxdepth: tenga enfind directory -maxdepth 1 -type f -exec grep -l "string" {} + | wc -l
cuenta que esta segunda opción es más lenta que grep.grep
El parámetro s-l
solo generará los nombres de archivo que coinciden$PATTERN
,wc
puede contarlos después.fuente
Aclaración: Esto busca el número de archivos que tienen el "patrón_para_ver_para" en su contenido y no en sus nombres de archivo (como la respuesta de Wag). A partir de su pregunta, es difícil saber lo que está buscando.
fuente
find . ! -name . -prune -type f
(no se pierda los backticks). Este comando solo enumera los archivos en la carpeta.Esto funciona en Bash con cualquier nombre de archivo:
Explicación:
grep
La-Z
opción 'imprime cada resultado con un separador de ␀ bytes. Este carácter no puede ser parte del nombre de un archivo, por lo que simplemente podemos contar la cantidad de separadores para obtener la cantidad de archivos.tr
.wc
.fuente