我创建了一个脚本来自动清理由 CRON 运行的 ET9000 Sat-Receiver 上的录音。
我已经在运行一个脚本来清理我录音中文件的旧 X-Days ......但我认识到
find /media/hdd/Serien/my_fav_series/ -mtime +5
效率不够高,一个记录生成的四到六个文件中的一些具有不同的年龄......而且我想确保我总是会留下一些记录,即使这些记录超过 X 天!
所以这就是我到目前为止所得到的:
#!/bin/bash
DIR=$1
TS=$2
REC=$((TS * 6))
RECS=$((TS + 1))
FILES=$(ls /media/hdd/Serien/$DIR/|egrep '\.ts$'|wc -l)
DATE=$(date +"%Y-%m-%d %H:%M")
if [ $FILES -gt $TS ];
then
ls -ct /media/hdd/Serien/$DIR/|egrep '\.ts$'|tail -n+$TS > /tmp/del.lst
cd /media/hdd/Serien/$DIR
#cat /tmp/del.lst|xargs -0 rm
while IFS= read -r file
do
rm -- "$file"
done < /tmp/del.lst
cd -
rm /tmp/del.lst
echo "$DATE - $DIR - Saved the $RECS newest records & deleted older records in folder" >> /media/hdd/backup/cleanup.log
else
echo "$DATE - $DIR - Less then $TS records in folder" >> /media/hdd/backup/cleanup.log
fi
它按预期工作,并删除了最旧的 *.TS 文件,同时保持通过参数给出的数量......
但它还没有我想要的智能!我仍然需要的是删除所有剩余的添加。剩下的我的意思是另一个不占用空间的记录部分:
20121221 1628 - ProSieben HD - How I Met Your Mother.ts
20121221 1628 - ProSieben HD - How I Met Your Mother.ts.ap
20121221 1628 - ProSieben HD - How I Met Your Mother.ts.cuts
20121221 1628 - ProSieben HD - How I Met Your Mother.ts.sc
在这将被清理之后,我将在目录中留下 *.AP、*.CUTS、*.SC 和 *.META。而且我不知道如何编写一个函数来删除所有没有对应 *.TS 与 em 的文件...
编辑:
ls -ct /media/hdd/Serien/How_I_met_your_mother/
20130102 1600 - ProSieben HD - How I Met Your Mother.ts.meta
20130102 1600 - ProSieben HD - How I Met Your Mother.ts
20130102 1600 - ProSieben HD - How I Met Your Mother.ts.ap
20130102 1600 - ProSieben HD - How I Met Your Mother.ts.cuts
20130102 1600 - ProSieben HD - How I Met Your Mother.ts.sc
20130102 1600 - ProSieben HD - How I Met Your Mother.eit
20130102 1141 - ProSieben HD - How I Met Your Mother.ts.ap
20130102 1141 - ProSieben HD - How I Met Your Mother.ts.cuts
20130102 1141 - ProSieben HD - How I Met Your Mother.ts.sc
20130102 1141 - ProSieben HD - How I Met Your Mother.eit
20130102 1114 - ProSieben HD - How I Met Your Mother.eit
“ls -ct”输出的前六行显示了一个完整的尚未清理的记录。第二组仅显示 5 个文件是已删除记录的剩余部分。
我需要的是一个函数,它可以识别第一个日期和时间模式并对组中的那些进行排序,然后检查该组是否包含 *.TS 文件,如果它不删除该组的其余部分。
我希望你能帮忙。
格雷茨·米尔科