Cómo obtener todos los archivos que exceden cierto tamaño y eliminarlos
Estoy buscando un comando de Linux para obtener todos los archivos que exceden una cierto tamaño de la corriente directorio y sus subdirectorios.
¿Cuál es la forma más fácil de eliminar todos estos archivos?
4 answers
Similar a la respuesta exec rm, pero no necesita un proceso para cada archivo encontrado:
find . -size +100k -delete
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 \;
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í.
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
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