Mac y Linux: cómo contar todos los ficheros de una carpeta con subcarpetas
Es fácil en macOS conocer el número de elementos que contiene una carpeta y de hecho existen distintas formas, empezando por las opciones de visualización. Siempre que hayas marcado en el menú Visualización del Finder la opción «Mostrar barra de estado» tendrás esa información al pie de la ventana.
Y una alternativa rápida: pulsa la tecla espacio teniendo seleccionada una carpeta e indicará peso y número de ítems en un santiamén.
Cuando se trata de un directorio con múltiples sub-directorios y en definitiva, cientos o miles de ítems almacenados en él, seguimos teniendo una manera muy simple: seleccionar la carpeta y pulsar Comando + I > Obtener información.
Ahora pondré otro ejemplo.
En mi Mac quise averiguar el número total de canciones .mp3 guardadas a lo largo de los años en una biblioteca musical (no utilizo iTunes para ello) del disco duro. Dicha carpeta la bauticé en su día «mp3 Music_collection» y con Obtener información veo al instante que hay más de 26.000 ítems.
Sin embargo hay un problema: dentro de la colección de música figuran, además de las propias canciones, gran número de .jpg que representan las carátulas de los discos e incluso ficheros de texto con listados de las canciones de dichos discos. Y lo que me interesa es únicamente conocer el número total de canciones almacenadas, es decir, el recuento de todos los .mp3.
Para esta situación no he visto más remedio que recurrir a un comando de Terminal. En concreto el siguiente:
find /RUTA_DEL_DIRECTORIO/ |fgrep -c '.mp3'
Esto nos devolverá el número total de archivos con la extensión .mp3 sin contar las carpetas u otros elementos.
En mi caso particular:
find /Users/pvacas/mp3\ Music_collection/ |fgrep -c '.mp3'
Que arroja como resultado: 22276. Bien, ahora sé que actualmente tengo algo más de 22.000 canciones.
Lo interesante es aplicarlo a otros muchos casos, es decir, si en lugar de canciones buscamos el total de imágenes o ficheros de texto de un directorio, basta con sustituir la extensión ‘.mp3’ por ‘.jpg’, ‘.png’, ‘.txt’ o cualquier otra.
Nota. Estos comandos también son válidos para Linux.
¡Buen aporte!
Si se quisiera por ejemplo borrar todos los ficheros de toda una estructura de directorios con una extensión determinada, se podría hacer lo siguiente:
find . -name «*.gz» -type f -delete
Esto vendría bien para por ejemplo, eliminar todos los ficheros de copia de seguridad que genera el wordpress (gz) dentro la carpeta /var/www de todos los hostings que allí tengamos alojados.