¿Busca el número de archivos en la carpeta y subcarpetas?

111

Quiero encontrar el recuento total de la cantidad de archivos en una carpeta y todas sus subcarpetas.

    
pregunta topless 08.04.2011 - 13:55

9 respuestas

177

Puede ser algo así como

find . -type f | wc -l

haría el truco. Pruebe el comando desde la carpeta principal.

    
respondido por el sagarchalise 08.04.2011 - 14:06
22

Use el comando tree . Es posible que deba instalar el paquete tree .

Enumerará todos los archivos y carpetas debajo de la carpeta dada y mostrará un resumen al final.

    
respondido por el Egil 08.04.2011 - 14:09
10

Para contar archivos (incluso archivos sin una extensión) en la raíz del directorio actual, use:

ls -l | grep ^- | wc -l

Para contar archivos (incluso archivos sin extensión) recursivamente desde la raíz del directorio actual, use:

ls -lR | grep ^- | wc -l
    
respondido por el user38537 12.11.2013 - 21:39
9

La forma más rápida y sencilla es usar tree . Su velocidad está limitada por su terminal de salida, por lo que si canaliza el resultado a tail -1 , obtendrá un resultado inmediato. También puede controlar a qué nivel de directorio le gustan los resultados, utilizando la opción -L . Para salida coloreada, use -C . Por ejemplo:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

Si aún no está allí, puede obtenerlo aquí .

    
respondido por el not2qubit 15.01.2014 - 14:20
4
find -type f -printf . | wc -c

No cuente las líneas de salida de búsqueda, porque los nombres de archivo que contienen 99 líneas nuevas contarán como 100 archivos.

    
respondido por el user unknown 08.04.2011 - 16:21
2

Use este comando para cada carpeta en la ruta

for D in *; do echo $D; find $D -type f| wc -l; done
    
respondido por el Sriram Murali 20.03.2014 - 19:02
1

find parece ser más rápido que tree, así que usé a continuación para contar los archivos en cada directorio del directorio de trabajo actual (ignorando los archivos en CWD) permitiendo que los directorios tengan espacios:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

    
respondido por el Mike Bounds 21.07.2016 - 11:47
0

Puedes usar find . | wc -l

find . listará todos los archivos y carpetas y sus contenidos comenzando en su carpeta actual.
wc -l cuenta los resultados de find

    
respondido por el david 08.04.2011 - 14:06
0

Me gustaría ir con esta opción yo mismo:

  

ls -alR | grep -c ^ -

    
respondido por el Charles 29.05.2016 - 08:55

Lea otras preguntas en las etiquetas