Estoy tratando de encontrar todos los archivos grandes en mi servidor Centos. Para hacer eso estoy usando:
find / -maxdepth 10 -size +100000 -ls
Intenté cambiar -lsa -lshpero no está permitido.
¿Cómo puedo mostrar estos resultados con tamaños legibles por humanos (usando los sufijos k, M, ...)?

fileutilidad confind.Respuestas:
findno tiene opciones sofisticadas comols. Si quieresls -h, necesitas llamarls.Recomiendo la
-xdevopción de evitar recurrir a otros sistemas de archivos, lo que sería inútil si le preocupa el espacio en disco.Si usa zsh como su shell, en lugar de usar
find, puede usar calificadores glob. Limitar el tamaño del archivo es simple:Lseguido de un tamaño; El tamaño puede tener una unidad opcional antes del número. Si no le importa la profundidad máxima, puede usar**/para recurrir a subdirectorios. Si le importa la profundidad máxima, es más engorroso ya que los patrones de globo zsh carecen de una forma de expresar "a lo sumo n ocurrencias". Para evitar la recurrencia entre dispositivos, use eldcalificador global; necesita encontrar el número de dispositivo, que puede mostrar con elstatcomando en Linux (stat -c %d /para mostrar solo el número) o con el propiostatincorporado de zsh (ejecutarzmodload zsh/statpara cargarlo).fuente
El comando que está intentando es legible para mí. Sin embargo, puede hacer uso de la utilidad de archivo con la búsqueda de la siguiente manera.
Otra forma de hacerlo es usando el siguiente comando.
El comando anterior le dará los archivos en el tamaño de archivo ordenado.
Si está utilizando coreutils> 7.5 , puede ejecutar el siguiente comando para enumerar los archivos por tamaños.
En mi máquina, no tenía la
sort -hopción disponible.Como mencionó en el comentario, su formato legible para humanos es que el archivo debe tener el tamaño en kb , mb o gb . Iría con el segundo comando que había publicado como respuesta. El resultado que obtuve cuando lo usé en mi sistema es,
fuente
> outputal comando. Luego, puede abrir el archivo y ver el resultado que desee :)du -a --max-depth=10 / | sort -rnes el cierre que se me ocurrió. Sin embargo, en este caso, no mostrará el tamaño en KB, MB o GB.Creo que lo que buscas es más como lo siguiente.
El le
-execpermite ejecutar un comando y el{}se sustituye con el resultado del hallazgo. Por último,+es decir que encontrar es el final del comando y es obligatorio.fuente
{}aquí. Las comillas simples en el comando son para el shell, pero el shell nunca va a ver ells -lah <args...>comando en absoluto, ve{}, lo que no necesita ser citado. Es lofindque vels -lah {}y es lofindque expande el{}, y como lo implica el nombre de la-execopción,findusa unaexec*llamada al sistema en los argumentos directamente, por lo que no habrá problemas con los espacios porquefindno va a dividir las palabras en sus nombres de archivo.-aopciónlses innecesaria ya que se espera que los argumentos sean archivos y no directorios. GNU encuentra usosls -dilspara la-lsopción, por lo que replicarlo más de cerca seríals -dilsh.find . -type f -exec file '{}' \;ejecuta archivos en cada archivo dentro o debajo del directorio actual. Tenga en cuenta que los corchetes están encerrados entre comillas simples para protegerlos de la interpretación como puntuación de script de shell. El punto y coma está protegido de manera similar mediante el uso de una barra diagonal inversa, aunque las comillas simples también podrían haberse utilizado en ese caso.{}ser citado.