Cómo obtener todos los archivos que exceden cierto tamaño y eliminarlos


  1. Estoy buscando un comando de Linux para obtener todos los archivos que exceden una cierto tamaño de la corriente directorio y sus subdirectorios.

  2. ¿Cuál es la forma más fácil de eliminar todos estos archivos?

Author: Brian Tompsett - 汤莱恩, 2011-02-20

4 answers

Similar a la respuesta exec rm, pero no necesita un proceso para cada archivo encontrado:

find . -size +100k -delete
 55
Author: Erik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-20 12:39:39

Una sola línea:

find . -size +100k -exec rm {} \;

La primera parte (find . -size +100k) busca todos los archivos que comienzan desde el directorio actual (.) que exceden (+) 100 kBytes (100k).

La segunda parte (-exec rm {} \;) invocó el comando dado en cada archivo encontrado. {} es un marcador de posición para el nombre del archivo actual, incluida la ruta. \; solo marca el final del comando.

Recuerde siempre comprobar si sus criterios de filtrado son adecuados ejecutando raw find:

find . -size +100k

O, incluso podría hacer un copia de seguridad antes de eliminar:

find . -size +100k -exec cp --parents {} ~/backup \;
 14
Author: Tomasz Nurkiewicz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-20 12:35:22

In zsh :

ls -l *(Lk+100)   # list file size greater than 100kb

Así que:

rm *(Lk+100)

Más bondad de zsh aquí.

 1
Author: Brian Agnew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-20 12:37:26

Python está instalado en todos los sistemas operativos basados en unix, así que ¿por qué no usarlo en lugar de bash ?

Siempre encuentro a python más legible que awk y sed la magia.

Este es el código python que habría escrito:

import os
Kb = 1024 # Kilo byte is 1024 bytes
Mb = kb*kb
Gb = kb*kb*kb
for f in os.listdir("."):
    if os.stat(f).st_size>100*Kb:
        os.remove(f)

Y esta es la versión de una sola línea con python -c

python -c "import os; [os.remove(f) for f  in os.listdir('.') if os.stat(f).st_size>100*1024]"

Y si desea aplicar la búsqueda recursivamente, consulte this

 0
Author: Uri Goren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-24 15:37:44