¿Hay alguna manera de obtener rápidamente un tamaño exacto para un directorio (incluidos, recursivamente, todos sus subdirectorios)? No quiero los tamaños de los subdirectores, solo quiero decir que deben incluirse recursivamente en el tamaño total informado.
De lo contrario, ¿una forma de obtener un tamaño aproximado? Estoy pensando en algo df
que produce una respuesta rápida para todo el sistema de archivos, pero esta vez para un directorio específico (y sus subdirectorios).
Las soluciones que usan du
parecen tomar años cuando un directorio contiene miles de subdirectorios.
du
es el único método que conozco. El problema es que los datos se distribuyen por toda la jerarquía, por lo que debe contarlos con una herramienta para obtener los recuentos.Respuestas:
Encuentro que esto es bastante útil.
o para obtener un desglose de los directorios internos
y luego con una especie si tiene muchas subdirecciones
La razón por la que uso la opción -m es para asegurarme de obtener una salida de megabytes. Creo que es más fácil para mí comparar visualmente (cuando no obtengo una combinación de unidades, por ejemplo, comparar 999 KB y 1 MB frente a 999000 MB y 1000000 MB), el beneficio adicional es que puede pasar la salida en orden.
Póngalo todo en segundo plano y redirija la salida, llevará tiempo cualquier método que se use, es un recorrido de muchos archivos que llevará tiempo.
Tenga en cuenta el orden inverso para que los grandes estén al principio. Agregue esto a la ejecución cron cada n minutos.
Luego, con un alias ducache, tiene un uso de directorio bastante actualizado.
fuente
shopt -s dotglob
, de lo contrariodu -sm Directory/*
no contará los archivos / directorios ocultos.le dará un resumen del tamaño total en salida formateada "humana".
Como estabas buscando una alternativa
du
, lo intentéfind
, pero es exactamente lo mismo:fuente
du
lleva demasiado tiempo ya que produce un resultado preciso. Esperaba una herramienta / comando que proporcione una respuesta aproximada rápida y sucia.df
pero que funciona en todo el sistema de archivos.Puede que no le guste mi respuesta, pero creo que la mejor manera de hacer lo que quiere es ejecutar el "du -s" en segundo plano de forma regular utilizando cron y almacenar el resultado en un archivo. Luego, cuando desee un valor aproximado, use el valor del archivo. Puedes decidir con qué frecuencia ejecutar el du. No veo una forma más rápida de obtener el valor. El comando du es eficiente para lo que hace.
La única otra forma de hacerlo rápidamente es creando un sistema de archivos para el directorio, luego df le dará la respuesta que desea muy rápidamente.
Si es más rápido saber todo en el sistema de archivos, excepto su directorio, puede ejecutar df para el sistema de archivos, du para todo lo que no sea su directorio y restar.
fuente
No se ajusta exactamente a sus necesidades (no impresión de una línea) pero es mucho más fácil que otras soluciones:
Este comando le dará el tamaño del directorio y subdirectorio y el tamaño del archivo o subdirectorio más grande en el directorio actual.
PD:
head -2
es en caso de que un subdirectorio tome todo el lugar del directorio actual y se escuche antes que el actual.fuente