Estoy buscando una práctica línea para calcular el tamaño promedio de archivo en un directorio.
Lo que quiero es:
tamaño de todos los archivos / número de archivos en el directorio
bash
command-line
taffer
fuente
fuente
Respuestas:
Con FreeBSD / Mac OS X
find
,stat
yawk
(aunque no es exactamente una práctica):fuente
-v var=value
,awk
expandirá las secuencias ANSI C como\n
,\r
... Mientras que los shells se exportanPWD
, por lo que puede usarENVIRON["PWD"]
en elawk
que no tiene ese tipo de problema para los directorios que tienen barras invertidas en su nombre.find . -type f -exec stat -f%z {} +|awk '{s+=$0}END{print s/NR}'
.Con GNU encuentra:
O para el uso del disco:
Tenga en cuenta que si hay varios enlaces duros del mismo archivo allí, eso contará su uso de disco varias veces.
Lo anterior solo cuenta archivos regulares, no enlaces simbólicos o directorios u otros archivos especiales. Incluye archivos ocultos.
Lo mismo con los
zsh
builtins:fuente
Una solución simplista en una línea:
Tiene un truco sintáctico, solo considerando
ls
las líneas de salida que comienzan con '-', lo que debería constituir datos para archivos regulares.fuente
solo para archivos en un directorio, ignorando los subdirectorios:
O para contar todos los archivos, incluidos los archivos en subdirectorios:
fuente
du -s
agregará el uso del disco (no el tamaño) de todos los archivos y directorios y otros archivos no regulares , excluyendo los enlaces duros adicionales al mismo archivo, mientrasfind
contará todos los archivos regulares. Además, los nombres de archivo con caracteres de nueva línea se contarán varias veces.du -S
es específico de GNU.du -s
informará sectores o kilobytes dependiendo del sistema operativo.