En AWK:
{ sum += $1 }
END { print sum }
Entonces
du -b /tmp/* | awk '{ sum += $1 } END { print sum }'
Tenga en cuenta que el resultado no será correcto si los directorios bajo /tmp
tienen subdirectorios ellos mismos, porque du
produce totales acumulados en directorios y sus hijos.
du -s
calculará la suma por usted correctamente (en todos los subdirectorios y archivos en /tmp
, incluidos los ocultos):
du -sb /tmp
y du -c
calculará la suma de los directorios y archivos enumerados correctamente también:
du -cb /tmp/*
También puede producir una suma total de archivos seleccionados con du -c
. Esto funciona incluso si un argumento de du
no es un directorio, lo que no es el caso de du -s
:
$ du -sb file1 file2
17 file1
18 file2
$ du -cb file1 file2
17 file1
18 file2
35 total
Por cierto, para uso interactivo recomiendo agregar -h
opción en lugar de -b
o cualquier otro multiplicador de tamaño de bloque. Esto imprimirá el tamaño en formato de unidad legible por humanos.
$ du -ch file1 file2
4.0K file1
4.0K file2
8.0K total
Es simple, puedes usar:
du -b /tmp/* | awk 'BEGIN{i=0} {i=i+$1} END{print i}'
Si no está usando un comodín, si está usando un nombre de directorio como /tmp
, entonces debe evitar la última entrada porque la salida de du -b /tmp
es como:
size1 file1
size2 file2
size_total .
Así que ahora deberías evitar esta última entrada, así que usa:
du -b /tmp | awk 'BEGIN{i=0} {if( $2 != "." ){i=i+$1}} END{print i}'
Sin embargo, también puede usar -s
, calculará el resumen por usted, entonces no necesita agregar los valores, solo imprima el último, es decir:
du -s directory