2 votos

Uso del disco: ¿Cómo mostrar sólo las carpetas de máxima profundidad?

Quiero utilizar el du para poder encontrar las carpetas de mi sistema que superan un determinado tamaño.

El problema con du son los resultados que obtengo.

Por ejemplo, obtengo todas estas carpetas como resultados:

~/Downloads/MyFiles/MyPictures/Folder1/
~/Downloads/MyFiles/MyPictures/
~/Downloads/MyFiles/ 
~/Downloads/

Cuando sólo quiero tener :

~/Downloads/MyFiles/MyPictures/Folder1/

¿Cómo puedo hacerlo con du o cualquier otro comando?

0 votos

Entonces, ¿sólo cuenta una carpeta si no tiene subcarpetas o las subcarpetas están bien si son pequeñas? No es una respuesta directa, pero ncdu o Daisy Disk buscar rápidamente / de forma interactiva una vez que un mapa está hecho

1voto

du por sí solo no ayudará aquí, pero puedes combinar du con find para lograrlo:

find . -type d -exec sh -c '(ls -p "{}" | grep -q /) || du "{}"' \;

Lo que hace esto es lo siguiente:

  • find . -type d -exec ... \; busca todos los directorios y ejecuta la parte en ... para cada uno de ellos (con {} siendo sustituido por la ruta del directorio)
  • sh -c '...' ejecuta el ... parte en un subshell (porque -exec sólo puede ejecutar un binario y no conoce por sí mismo la sintaxis del shell)
  • (ls -p "{}" | grep -q /) lista todas las entradas dentro del directorio con un / si la propia entrada es un directorio, y luego busca silenciosamente las líneas que contienen / . Sólo nos interesa el código de retorno de grep aquí, así que si quieres comprobar manualmente lo que hace ejecuta (ls -p "DIR" | grep -q /); echo $? con varios DIR para ver la diferencia entre los directorios que contienen subdirectorios y los directorios que no
  • || du "{}" se ejecuta sólo si la parte anterior ( (...) ) hizo no encontrar cualquier coincidencia (lo que significa que estamos en un directorio sin más directorios)

PD: Me quito el sombrero ante https://stackoverflow.com/questions/4269798/use-gnu-find-to-show-only-the-leaf-directories para los detalles esenciales.

0 votos

Este es uno de los que hay que marcar para los scripts de shell avanzados. ¡Bien hecho, de hecho!

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X