Similar a la respuesta exec rm, pero no necesita un proceso para cada archivo encontrado:
find . -size +100k -delete
De una sola línea:
find . -size +100k -exec rm {} \;
La primera parte (find . -size +100k
) busca todos los archivos a partir del directorio actual (.
) superior a (+
) 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. \;
simplemente marca el final del comando.
Recuerde verificar siempre si sus criterios de filtrado son adecuados ejecutando find
sin formato :
find . -size +100k
O incluso puede hacer una copia de seguridad antes de eliminar:
find . -size +100k -exec cp --parents {} ~/backup \;
python está instalado en todos los sistemas operativos basados en Unix, entonces, ¿por qué no usarlo en lugar de bash?
Siempre encuentro Python más legible que awk
y sed
magia.
Este es el código python que hubiera 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 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 quieres aplicar la búsqueda recursivamente, mira esto