¿Cómo puedo encontrar archivos que sean más grandes o más pequeños que x bytes?

¿Cómo puedo encontrar archivos que sean más grandes o más pequeños que x bytes?

En una terminal, ¿cómo puedo encontrar archivos que sean más grandes o más pequeños que x bytes?

Supongo que puedo hacer algo como

find . -exec ls -l {} \;

y luego canalizar el resultado aawkpara filtrar por tamaño de archivo. ¿Pero no debería haber una manera más fácil que ésta?

Respuesta1

Usar:

find . -type f -size +4096c

para buscar archivos de más de 4096 bytes.

Y :

find . -type f -size -4096c

para buscar archivos de menos de 4096 bytes.

Observe la diferencia + y - después del cambio de tamaño.

El -sizeinterruptor explicó:

-size n[cwbkMG]

    File uses n units of space. The following suffixes can be used:

    `b'    for 512-byte blocks (this is the default if no suffix  is
                                used)

    `c'    for bytes

    `w'    for two-byte words

    `k'    for Kilobytes       (units of 1024 bytes)

    `M'    for Megabytes    (units of 1048576 bytes)

    `G'    for Gigabytes (units of 1073741824 bytes)

    The size does not count indirect blocks, but it does count
    blocks in sparse files that are not actually allocated. Bear in
    mind that the `%k' and `%b' format specifiers of -printf handle
    sparse files differently. The `b' suffix always denotes
    512-byte blocks and never 1 Kilobyte blocks, which is different
    to the behaviour of -ls.

Respuesta2

Creo findque podría ser útil solo sin conectarse a AWK. Por ejemplo,

find ~ -type f -size +2k  -exec ls -sh {} \;

La tilde indica dónde desea que comience su búsqueda y el resultado debe mostrar solo archivos de más de 2 kilobytes.

Para hacerlo más elegante, puede usar la -execopción para ejecutar otro comando que consiste en enumerar estos directorios con sus tamaños.

Para obtener más información, lea elpágina de manual parafind.

Respuesta3

AWK realmente es bastante fácil para este tipo de cosas. Aquí hay algunas cosas que puede hacer con él en relación con la verificación del tamaño del archivo, como solicitó:

Listar archivos de más de 200 bytes:

ls -l | awk '{if ($5 > 200) print $8}'

Enumere archivos de menos de 200 bytes y escriba la lista en un archivo:

ls -l | awk '{if ($5 < 200) print $8}' | tee -a filelog

Enumere archivos de 0 bytes, registre la lista en un archivo y elimine los archivos vacíos:

ls -l | awk '{if ($5 == 0) print $8}' | tee -a deletelog | xargs rm

Respuesta4

Usandofd, que es mucho más agradable de usar quefind

fd -S +1g

buscará en el directorio actual cualquier archivo de más de 1 GB

fd -S -1g

buscará archivosmenorde 1GB

información relacionada