2012-03-20 17 views
11

Estoy tratando de obtener el tamaño de los directorios llamados "bak" con find y du.Obtener el tamaño total de las carpetas con find & du

yo que: find -name bak -type d -exec du -ch '{}' \;

Pero devuelve el tamaño de cada carpeta con el nombre "bak" no el total.

¿Te gustó? Gracias :)

+0

recomiendo el uso de 'awk' para calcular la suma final (usando' 'sin du' -h') – Alex

+0

@Alex, ¿por qué habría que ser preferido? –

Respuesta

16

Uso xargs(1) en lugar de -exec:

find . -name bak -type d | xargs du -ch 

-exec ejecuta el comando para cada archivo encontrado (consulte la documentación find(1)). Piping to xargs le permite agregar esos nombres de archivo y solo ejecutar du una vez. También puede hacer:

find -name bak -type d -exec du -ch '{}' \; + 

Si su versión de find lo soporta.

+0

¡Funciona! Me mostró el tamaño total de las carpetas. Gracias – Piokaz

+1

Esto no funciona para mí en Ubuntu 12.04. Tubería los resultados de esta sugerencia para awk funciona: | awk '{sum + = $ 1} END {print sum}' – greggles

+3

Para acelerar las cosas, puede agregar la profundidad máxima si conoce la estructura de los directorios que está buscando: 'find. -maxdepth 3 -type d -name bak | xargs du -ch --max-depth = 0' – ajpevers

3

Probar du -hcs. Desde la página de manual:

-s, --summarize 
     display only a total for each argument 
+0

Mismo problema, con -s o sin. – Piokaz

+1

Hmm, ¿has probado 'find -name bak -type d -exec du -ch {} +'? –

+0

Intenté, parece que mi versión de find no lo admite. – Piokaz

0

RSS du con los resultados del hallazgo:

du -shc $(find . -name bak -type d) 
Cuestiones relacionadas