-1

У меня есть основная папка /srv /ftp со многими подпапками (сотнями) и файлами (более 80 000 файлов). Этот каталог имеет 10 ГБ.

Мне нужно сделать скрипт для этого: мне нужно удалить самые старые файлы (самый ранний созданный файл) из всех подкаталогов, пока размер основного каталога /srv /ftp не станет 8 ГБ.

Как я могу это сделать?

1 ответ1

0

Попробуйте этот скрипт (поместите его в папку head).

#!/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 '   ')

я думаю, что эту задачу можно было бы облегчить с помощью Python, но я хотел попробовать написать ее на bash. Многие вещи можно было бы сделать намного лучше, но это работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .