删除最旧的文件,直到目录大小为 8 GB

删除最旧的文件,直到目录大小为 8 GB

我有一个主文件夹 /srv/ftp,其中包含许多子文件夹(数百个)和文件(超过 80 000 个文件)。此目录有 10 GB。

我需要为此编写一个脚本:我需要从所有子目录中删除最旧的文件(最早创建的文件),直到主 /srv/ftp 目录大小为 8GB。

我怎样才能做到这一点?

答案1

尝试这个脚本(将其放在头文件夹中)。

#!/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 编写。许多事情可以做得更好,但它确实有效。

相关内容