我有一个主文件夹 /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 编写。许多事情可以做得更好,但它确实有效。