6 votos

Cómo identificar el más grande de los archivos en un directorio incluido en sus subdirectorios?

Tengo un directorio con un montón de archivos y subdirectorios. Sé que hay un pequeño número de grandes archivos contenidos en algún lugar dentro de. ¿Qué es un rápido/fácil de identificar uno o más archivos en un directorio, incluyendo lo largo de todos sus subdirectorios?

He intentado esto:

find . -printf '%s %p\n'|sort -nr|head
find: -printf: unknown primary or operator

y esto:

find -type f -printf '%s %p\n' |sort -nr | head

find: illegal option -- t
usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
       find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]

y esto:

find . -type f -printf "%s %p\n" | sort -nr | head -1
find: -printf: unknown primary or operator

5voto

Michael Zhou Puntos 167

He aquí un ejemplo de uso de BSD encontrar y stat-

find . -type f -exec stat -f '%z %N' {} + | sort -nr

4voto

Oskar Puntos 1242

Me gusta spotlight mejor que el rastreo de que el sistema de ficheros por razones de velocidad. Esto no informar directamente a tamaños para que usted pueda ordenar top 10, pero usted puede rápidamente (fracción de un segundo) a localizar los lugares donde los archivos grandes que existen.

mdfind 'kMDItemFSSize > 2000000000' | grep "$(pwd)"

Más opciones en este hilo. Agregar o quitar ceros o escoge el tamaño umbral para la búsqueda de archivos de gran tamaño.


En cuanto a su sintaxis errores y otros problemas que se enfrentará es el manejo de los espacios en archivos y directorios, por lo tanto el "" alrededor de $(pwd) así que usted puede conseguir rápidamente en el territorio donde usted necesita para aprender un poco más acerca de las conchas, las tuberías, el espacio en blanco y escapar de palabras / variables. Peor de los casos, aislar cada uno de los elementos arriba, así que usted puede aprender lo que la salida de la find comando está diciendo y que la capa de nuevo los filtros de procesamiento / una vez que los resultados sean válidos.

Si todo lo que está después de la limpieza de grandes archivos y no necesita de un guión y quieren aprender más tarde. Recomiendo el sistema de información, el almacenamiento de gestión de la conexión en serie o en Disco. Finder también puede calcular todos los tamaños bien para mí en preferencias si desea interactuar mientras navegas.

3voto

BSD find (que es parte de macOS) y GNU find (que es parte de las distribuciones de Linux) utilizar diferentes opciones, por lo que sus ejemplos no funcionan.

  • Usted puede instalar GNU find a través de Homebrew (brew install findutils) y, a continuación, utilizar gfind para obtener GNU sintaxis/opciones
  • Para una solución rápida, du -a TOP-DIRECTORY | sort -r funcionará así. Enumera los archivos y directorios, así que no es fácil trabajar dentro de una secuencia de comandos

2voto

Douglas Puntos 10417

Si usted está buscando el más grande archivo(s) en cada directorio y el niño subdirectorios

El uso de la du comando:

du -ah . | sort -nr | head -n X

Donde X es el número de resultados que usted desea. Por ejemplo, si desea que el top 25, sustituto de 25 de X. Si desea que el archivo más grande, utilizar 1. Aparecerá una lista de la salida en "formato legible."

1voto

Stewart Puntos 128

¿Necesita esta para una secuencia de comandos, o es una herramienta manual aceptable?

Me parece Disk Inventory X es excepcional para la identificación de grandes directorios y archivos.

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