Pregunta Elimine los archivos más antiguos hasta que el tamaño del directorio sea de 8 GB


Tengo una carpeta principal / srv / ftp con muchas subcarpetas (cientos) y archivos (más de 80 000 archivos). Este dir tiene 10 GB.

Necesito hacer un script para esto: necesito eliminar los archivos más antiguos (el archivo más antiguo creado) de todos los subdirectorios hasta que el tamaño del directorio principal / srv / ftp sea de 8GB.

¿Cómo puedo hacer esto?


-1


origen




Respuestas:


Pruebe este script (colóquelo dentro de la carpeta principal).

#!/bin/bash

echo New dimension?
read dimension

initialDimension=$(du -sk | cut -f1 -d '    ') #Find initial dimension

while [ "$(du -sk | cut -f1 -d '    ')" -gt $dimension ] #While the dimension of this
#Directory is greater then $dimension (inputted before)
do
    echo Finding file
    #This let you find the oldest file name:
    uselessChars=$(find -type f -printf '%T+ %p\n' | sort | head -n 1 | cut -d ' ' -f 1)
    oldestFile=$(find -type f -printf '%T+ %p\n' | sort |head -n 1)

    oldestFile=${oldestFile#$uselessChars}; #Remove useless chars
    oldestFile=${oldestFile# } #Remove useless space
    echo " Found: $(find -type f -printf '%T+ %p\n' | sort | head -n 1)" #Print complete path
    $(rm "$oldestFile") #Remove the file
    echo Removed $oldestFile #Print the result
done

#The result:
echo Done
echo Initial Dimension: $initialDimension
echo Final Dimension: $(du -sk | cut -f1 -d '   ')

Creo que esta tarea se podría haber hecho más fácil con Python, pero quería intentar escribirla en bash. Se podrían haber hecho muchas cosas mucho mejor, pero funciona.


0



gracias. Pero no está funcionando. Linux devuelve "cortar: tipo inválido o lista de campo" - peter
¿Dice la línea? @peter - Federico Ponzi