Estoy usando este comando para encontrar las carpetas que quiero y contar el tamaño.
find . -type d -name 'tmp_c*' | xargs du -hcs {} \; +
Mi versión de find no es compatible con -exec. Pero esto funciona. Sin embargo, no estoy seguro de si me proporciona los totales correctos en los directorios que contienen mi cadena de búsqueda. Cuando ejecuto el comando y canalizo a menos, veo que cuenta el tamaño de cada carpeta y luego genera un total de vez en cuando. Como esto:
140K ./r/g/userid/attach/tmp_c_241091464_2
68K ./r/g/userid/attach/tmp_c_58367014_undefined
2.3G total
Si redirijo la salida a un archivo y luego grep en total, obtengo esto:
2.3G total
978M total
1.1G total
2.0G total
1.1G total
Ipensaresto me está dando los números correctos. Pero, ¿cómo puedo llevar este comando un paso más allá y hacer que sume los totales de un total general en una línea?
Respuesta1
find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -
Esto supone versiones (¿bastante recientes?) GNU de find
y du
.
Respuesta2
Esto debería funcionar, probado en mi caja EL4... es la más antigua que tengo y me da vergüenza, no sé cómo se usa EL3.
find . -type d -name 'tmp_c*' -print0|xargs -0 du -c|tail -1
Hecho concoreutils-4.5.3-26
Respuesta3
https://stackoverflow.com/a/1323769/799204
Una solución alternativa es utilizar awk:
pero el guión debe adaptarse para este caso, intente
find . -type d -name 'tmp_c*' -print0 | xargs -0 du -s | awk 'BEGIN { sum=0 } { sum+=$1 } END { print sum }'
la salida estará en decimal
Respuesta4
Verifiqué que epel comienza en 5, no en 3, por lo que la única opción es un script personalizado.
También puede instalar ncdu;
Lo uso todo el tiempo, mucho más fácil y rápido que cualquier bash personalizado. (Puede navegar a través de los directorios, ahorra mucho tiempo).