Quiero contar el número de archivos para cada extensión en un directorio, así como los archivos sin extensión.
He probado algunas opciones, pero todavía no he encontrado una solución que funcione:
find "$folder" -type f | sed 's/.*\.//' | sort | uniq -ces una opción pero no funciona si no hay extensión de archivo. Necesito saber cuántos archivos no tienen una extensión.También probé un bucle de búsqueda en una matriz y luego sumé los resultados, pero en este momento ese código arroja un error variable no declarado, pero solo fuera del bucle:
declare -a arr arr=() echo ${arr[@]}Esto arroja una variable no declarada, así como una vez que se completa el ciclo de búsqueda.
command-line
find
extension
niño tractor
fuente
fuente

ext = [ f.split('.')[-1] for f in os.listdir('./') ]Thatll hacerla par de líneas más cortas y quizás más PythonicSi tienes GNU awk, podrías hacer algo como
es decir, construir / incrementar una matriz asociativa tecleada en el último
.campo separado, o alguna cadena fija arbitraria, como(none)si no hubiera extensión.mawkno parece permitir un separador de registro de byte nulo; podría usarlomawkcon el separador de línea nueva predeterminado si está seguro de que no necesita tratar con líneas nuevas en los nombres de sus archivos:fuente
Con la tarea básica
/bin/sho inclusobashpuede ser un poco difícil, pero como puede ver en otras respuestas, las herramientas que pueden trabajar en datos agregados pueden manejar esa tarea particularmente fácil. Una de esas herramientas sería lasqlitebase de datos.El proceso muy simple para usar la
sqlitebase de datos sería crear un.csvarchivo con dos campos: nombre de archivo y extensión. Más tardesqlitese puede utilizar la instrucción simple agregadoCOUNT()deGROUP BY extllevar a cabo el recuento de archivos basado en campo de extensiónfuente
files_tb¿Creo que se hace referencia a la tabla pero las columnas de la tabla no están definidas en ningún lugar que pueda ver?printf. Y SQLite usará de forma predeterminada el tratamiento de la primera línea del archivo csv como nombres de columna.Usando PowerShell si esa es una opción:
o más corto, usando alias:
fuente