Recién estamos comenzando una clase de UNIX y estamos aprendiendo una variedad de comandos Bash. Nuestra tarea implica ejecutar varios comandos en un directorio que también tiene varias carpetas debajo.
Sé cómo enumerar y contar todos los archivos regulares de la carpeta raíz usando:
find . -type l | wc -l
Pero me gustaría saber a dónde ir desde allí para encontrar el archivo más grande en todo el directorio. He visto dualgunas cosas con respecto a un comando, pero no lo hemos aprendido, así que en el repertorio de cosas que hemos aprendido, supongo que necesitamos conectarlo de alguna manera al ls -tcomando.
Y perdóname si mi 'jerga' no es correcta, ¡todavía me estoy acostumbrando!

manseguido del comando que le interesa. Aparecerá una buena entrada manual para ese comando (presioneqpara volver a la línea de comandos).Respuestas:
Cita de este enlace
fuente
'%s %p\n'con'%p\n'y añadiendo|xargs ls -lhal finaldu -am . | sort -nr | grep '\..*\.' | head. Elmes el tamaño de archivo de pantalla en megabytes y se utilizagreppara líneas muestran con al menos dos puntos, el primero es en el./en el camino, el segundo es en la extensión de archivo, por ejemplo.mov.Para encontrar los 25 archivos principales en el directorio actual y sus subdirectorios:
find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25Esto generará los 25 archivos principales ordenándolos según el tamaño de los archivos mediante el comando canalizado "sort -nr -k5".
Lo mismo pero con tamaños de archivo legibles por humanos:
find . -type f -exec ls -alh {} \; | sort -hr -k5 | head -n 25fuente
salidas
Si solo quiere el nombre del archivo:
Esto evita usar
awky le permite usar las banderas que deseels.Advertencia . Debido a que
xargsintenta evitar construir líneas de comando demasiado largas, esto podría fallar si lo ejecuta en un directorio con muchos archivos porquelstermina ejecutándose más de una vez. No es un problema insuperable (puede recopilar lahead -n 1salida de cadalsinvocación y ejecutarls -Snuevamente, repitiendo hasta que tenga un solo archivo), pero estropea un poco este enfoque.fuente
xargs, te he descuidado +1find . -type f -print0 | xargs -0 ls -lS | head -n 1xargsha ejecutado. Para solucionarlo añadir clasificar:find . -type f -print0 | xargs -0 ls -lS | sort -rk 5 | head -n 10. Trabajó en OSX para mí.No existe un comando simple disponible para encontrar los archivos / directorios más grandes en un sistema de archivos Linux / UNIX / BSD. Sin embargo, con la combinación de los siguientes tres comandos (usando tuberías) puede encontrar fácilmente la lista de archivos más grandes:
Si desea una salida más legible por humanos, intente:
Dónde,
fuente
Esto enumera los archivos de forma recursiva si son archivos normales, los ordena por el séptimo campo (que es el tamaño en mi
findsalida; verifique el suyo) y muestra solo el primer archivo.La primera opción
findes la ruta de inicio para la búsqueda recursiva. Un tipo defbúsquedas de archivos normales. Tenga en cuenta que si intenta analizar esto como un nombre de archivo, puede fallar si el nombre de archivo contiene espacios, líneas nuevas u otros caracteres especiales. Las opcionessorttambién varían según el sistema operativo. Estoy usando FreeBSD.Una solución "mejor" pero más compleja y más pesada sería
findatravesar los directorios, pero quizás usarstatpara obtener los detalles sobre el archivo, luego quizás usarawkpara encontrar el tamaño más grande. Tenga en cuenta que la salida destattambién depende de su sistema operativo.fuente
+7supone que debe hacer el arg? En mi máquina, sort se queja de que no puede encontrar un archivo llamado+7.sortsu sistema. Estoy usando OS X 10.4 en este momento, donde el uso se deriva del tipo de FreeBSD :sort [-cmus] [-t separator] [-o output-file] [-T tempdir] [-bdfiMnr] [+POS1 [-POS2]] [-k POS1[,POS2]] [file...]... Note el+POS [-POS2]. Esto también funciona en las versiones actuales de FreeBSD.-kargumento, por ejemplo.sort -k 7. editar: por OSX 10.5, la página de manual para ordenar parece haber cambiado a la versión que tengo.[+POS1] [-POS2]notación es más antigua. Por lo que puedo decir, esta notación todavía es compatible con la clasificación GNU moderna, aunque ahora que miro, parece que se ha eliminado de la página del manual de clasificación después de la versión 5.1. Puede verlo en la página de manual de sort para FreeBSD 4.11 . ¡Supongo que no he leído la página de manual de sort desde antes del lanzamiento de FreeBSD 5.0!+POS1cuenta que los recuentos ordenan los parámetros desde cero, mientras que los-k POS1recuentos desde uno.Esto encontrará el archivo o carpeta más grande en su directorio de trabajo actual:
Para encontrar el archivo más grande en todos los subdirectorios:
fuente
ls. En mis pruebas, la-Sbandera mostrará un archivo por línea. He corregido el segundo comando. Con suerte, ahora es completamente a prueba. Gracias.En Solaris uso:
o
porque cualquier otra cosa publicada aquí no funcionó. Esto encontrará el archivo más grande en
$PWDy subdirectorios.fuente
Pruebe el siguiente resumen (muestre los 20 archivos más grandes):
o (tamaños legibles por humanos):
Entonces, estos alias son útiles para tener en sus archivos rc :
fuente
Intente seguir el comando:
Esto imprimirá el nombre y tamaño de archivo más grande y más de 500M. Puede mover el
if($1 > 500000), e imprimirá el archivo más grande del directorio.fuente
du -aS /PATH/TO/folder | sort -rn | head -2 | tail -1o
du -aS /PATH/TO/folder | sort -rn | awk 'NR==2'fuente
Este script simplifica la búsqueda de archivos más grandes para acciones posteriores. Lo guardo en mi directorio ~ / bin y pongo ~ / bin en mi $ PATH.
fuente
Esa es una forma bastante más sencilla de hacerlo:
Y obtendrás esto:
8445 examples.desktopfuente
1***supone que debe hacer al final? Recibo un error de "no se encontraron coincidencias" para ese argumento.Solución Linux: Por ejemplo, desea ver la lista de todos los archivos / carpetas de su directorio de inicio (/) según el tamaño del archivo / carpeta ( orden descendente ).
sudo du -xm / | sort -rn | más
fuente
Para enumerar el archivo más grande en una carpeta
El resultado de
ls -shes una vista de tamañosyhcomprensible por humanos del número de tamaño de archivo.Podrías usar
ls -shS /pathFolder | head -n 1. Cuanto más grande seaSdesdelsya pedir la lista de los archivos más grandes a las más pequeñas, pero el primer resultado de su la suma de todos los archivos de esa carpeta. Entonces, si solo desea enumerar el archivo más grande, un archivo, debehead -n 2verificar el "resultado de la segunda línea" o usar el primer ejemplo conls sort head.fuente
fuente