如何保持文件夹中的文件数量小于限制

如何保持文件夹中的文件数量小于限制

我正在尝试创建一个 bash 脚本,将文件数量限制为 50000。我想每 5 分钟在 crontab 上运行一次 bash 脚本,这样当文件数量超出限制时,它就可以继续删除旧文件。我已经编写了代码,但它没有按预期工作。它删除了所有文件,而不仅仅是旧文件。我打算删除最后一个元素,直到文件数量低于限制。有没有更简单的方法来完成这个过程?

LIMIT=50000

NUMBER=$(find /mnt/capture/PPO/ -maxdepth 1 -name "*.pcap" wc -l)

if [[ $NUMBER -gt $LIMIT ]]  #if number greater than limit
then

FILES=$(find /mnt/capture/PPO/ -maxdepth 1 -name "*.pcap")


for f in "${FILES[@]}"

 do

rm $FILES[$NUMBER-$f]
done
 #delete the originals
fi

答案1

我认为你的 FILES 变量是错误的。它会查找所有文件,而不仅仅是最旧的文件。你可以使用类似这样的方法:

find /mnt/capture/PPO/ -maxdepth 1 -type f -name "*.pcap" -print0 | xargs -0 ls -lt | tail -5 | awk '{print $9}'

这将查找目录中最旧的 5 个文件。然后您可以根据需要更改该数字。

相关内容