¿Cómo calcular el uso del disco filtrado por patrón (por ejemplo, *.JPG)?

¿Cómo calcular el uso del disco filtrado por patrón (por ejemplo, *.JPG)?

¿Cómo puedo calcular el espacio en disco consumido sólo por algunos archivos de un directorio de forma recursiva?

Respuesta1

find -iname '*.jpg' -print0 | du --files0-from=- -h -c | tail -1

  1. -inamebusca sin distinguir entre mayúsculas y minúsculas
  2. -print0escribe NULen lugar de nuevas líneas
  3. --files0-from=-lee NULen lugar de nuevas líneas y lee en stdinlugar de argumentos
  4. -hgenera resultados en formato legible por humanos (por ejemplo, 1Ken lugar de 1024)
  5. -cgenera un total general (por ejemplo, 23G)
  6. tail -1generará solo el total general, suprimiendo los tamaños de archivos individuales

Respuesta2

Con zsh:

zmodload zsh/stat

stat -LA blocks +blocks -- **/*.jpg(NDoN)
print $(( (${(j[+])blocks} + 0) * 512 ))

Imprimiría el uso acumulado del disco de todos los archivos cuyo nombre termina en .jpg(incluidos los ocultos con el Dcalificador). Tenga en cuenta que si hay varios enlaces físicos al mismo archivo, su uso del disco se contará varias veces (eso es diferente de lo que duhacen la mayoría de las implementaciones).

Si algunos de los archivos son o tipodirectorio, eso solo contará el uso del disco de los archivos del directorio, no de los archivos que se pueden encontrar al atravesar esos directorios (otra diferencia con du).

información relacionada