之前用群晖自动更换桌面背景的脚本定期抓取高质量壁纸并存到了本地。
接口用的是随机图片,虽然抓取频率很低,但运行时间久了也会保存大量重复文件。
刚开始手动删除也不费力,现在攒了上千张图片就变成一个体力活了😓
能用脚本的绝不动手,还是使用计划任务脚本来解决:
DIR="/volume1/wallpaper"
# 创建一个关联数组来存储文件大小和对应文件的列表
declare -A size_map
# 查找目录中的所有文件,并遍历它们
find "$DIR" -maxdepth 1 -type f -exec stat --format='%s %n' {} + | while IFS=' ' read -r size name; do
# 如果这个大小已经存在于关联数组中,则删除其中一个文件(这里删除的是第一个找到的文件对应的列表中的第二个文件)
if [[ -n "${size_map[$size]}" ]]; then
echo "Deleting file: ${size_map[$size]}"
rm "${size_map[$size]}"
# 更新关联数组,存储当前文件为要删除的下一个候选
size_map[$size]="$name"
else
# 如果这个大小不存在于关联数组中,则存储它
size_map[$size]="$name"
fi
done
任务权限使用普通用户即可,不需要root。