Necesito encontrar los archivos más grandes en una carpeta.
¿Cómo escaneo una carpeta de forma recursiva y clasifico el contenido por tamaño?
He intentado usar ls -R -S
, pero esto también enumera los directorios.
También intenté usar find
.
command-line
find
ls
usuario2179293
fuente
fuente
Respuestas:
También puedes hacer esto con solo
du
. Solo para estar seguro, estoy usando esta versión dedu
:El enfoque:
Desglose de enfoque
El comando
du -ah DIR
producirá una lista de todos los archivos y directorios en un directorio dadoDIR
. El-h
producirá tamaños legibles por humanos que prefiero. Si no los quiere, suelte ese interruptor. Estoy usandohead -6
solo para limitar la cantidad de salida.Suficientemente fácil de ordenar de menor a mayor:
Invertirlo, de mayor a menor:
No me muestres el directorio, solo los archivos:
Si solo desea la lista de menor a mayor, pero los 6 archivos ofensivos principales puede revertir el interruptor de clasificación, soltar (
-r
) y usar entail -6
lugar dehead -6
.fuente
grep -v "/$"
parte no parece estar haciendo lo que esperaba, ya que los directorios no tienen una barra inclinada añadida. ¿Alguien sabe cómo excluir directorios de los resultados?/
s finales , por ejemplo,/home/saml/Downloads/audible
parece ser un directorio, pero no tiene una barra oblicua. Solo/home/saml/Downloads/
tiene una barra oblicua, pero probablemente sea porque lo escribiste con una barra oblicua al especificar el argumento para inicialdu
.Si desea encontrar todos los archivos en el directorio actual y sus subdirectorios y enumerarlos según su tamaño (sin considerar su ruta), y suponiendo que ninguno de los nombres de archivo contenga caracteres de nueva línea, con GNU
find
, puede hacer esto:Desde
man find
un sistema GNU:De
man sort
:fuente
Pruebe el siguiente comando:
Enumerará de manera recursiva los 20 archivos más grandes del directorio actual.
Nota: La opción
-h
parasort
no está disponible en OSX / BSD, por lo que debe instalarsort
desdecoreutils
(por ejemplo, a través debrew
) y aplicar la ruta de bin local aPATH
, por ejemploAlternativamente use:
Para el uso de directorios más grande
du
, por ejemplo:o:
fuente
Esto buscará todos los archivos de forma recursiva y los ordenará por tamaño. Imprime todos los tamaños de archivo en kb y redondea hacia abajo para que pueda ver archivos de 0 KB, pero estaba lo suficientemente cerca para mis usos y funciona en OSX.
find . -type f -print0 | xargs -0 ls -la | awk '{print int($5/1000) " KB\t" $9}' | sort -n -r -k1
fuente
find . -type f
encuentra archivos ... funciona de manera recursiva, tienes razón, pero enumera todos los archivos que encuentra, no los directorios en sí mismosCon
zsh
, encontrará el archivo más grande (en términos de tamaño aparente, como la columna de tamaño en lals -l
salida, no el uso del disco) con:Para los 6 más grandes:
Para ordenarlos por tamaño de archivo, puede usar
ls
la-S
opción 's . Algunasls
implementaciones también tienen una-U
opción parals
no ordenar la lista (ya que aquí ya está ordenada por tamañozsh
).fuente
Solución simple para Mac / Linux que omite directorios:
fuente
El equivalente en
BSD
oOSX
esfuente
Esta es una necesidad increíblemente común por una variedad de razones (me gusta encontrar la copia de seguridad más reciente en un directorio), y es una tarea sorprendentemente simple.
Voy a proporcionar una solución de Linux que utiliza las utilidades find, xargs, stat, tail, awk y sort.
La mayoría de las personas han proporcionado algunas respuestas únicas, pero prefiero las mías porque maneja correctamente los nombres de archivo, y el caso de uso se puede cambiar fácilmente (modificar estadísticas y ordenar argumentos)
También proporcionaré una solución de Python que debería permitirle usar esta funcionalidad incluso en Windows
Solución de línea de comando de Linux
Recursivamente devuelve una lista completa de solo archivos de un directorio, ordenados por tamaño de archivo
Igual que antes, pero esta vez, devuelve el archivo más grande.
Mismo patrón exacto, pero ahora seleccione el archivo más nuevo en lugar del más grande
Explicación:
Solución Python
Este script tarda un poco más en explicarse, pero esencialmente si lo guarda como un script, buscará a través del primer argumento proporcionado en la línea de comando y devolverá el archivo más grande en ese directorio. El script no verifica errores, pero debería darle una idea de cómo abordar esto en Python, lo que le brinda una buena plataforma independiente para resolver este problema.
fuente
Variante de esta respuesta de una pregunta similar
fuente
Pruebe el siguiente comando con la opción de ordenar para tener carpetas con tamaño en orden ascendente
du -sh * | sort -sh
fuente
Algo que funciona en cualquier plataforma, excepto AIX y HP-UX es:
fuente