我已经创建了一个脚本来自动清理我的ET9000卫星接收器上的录音,它由CRON运行。
我已经在运行一个脚本来清理我录制的文件中较旧的X天了…但我意识到
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的文件...
编辑:
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文件,如果没有删除,则为该组的其余部分。
希望你能帮上忙。
Greetz Mirco
发布于 2013-01-06 23:54:26
基于你的编辑,我有另一个想法。
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts.meta
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts.ap
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts.cuts
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts.sc
20130102 1600 - ProSieben HD -我如何认识您的Mother.eit
20130102 1141 - ProSieben HD -我如何认识您的Mother.ts.ap
20130102 1141 - ProSieben HD -我如何认识您的Mother.ts.cuts
20130102 1141 - ProSieben HD -我如何认识您的Mother.ts.sc
20130102 1141 - ProSieben HD -我如何认识您的Mother.eit
20130102 1114 - ProSieben HD - How I Met Your Mother.eit
20130102 1600 - ProSieben HD - How I Met Your Mother.ts
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts.meta
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts.ap
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts.cuts
20130102 1600 - ProSieben HD -我如何认识您的Mother.ts.sc
20130102 1600 - ProSieben HD - How I Met Your Mother.eit
发布于 2013-01-04 17:24:58
如果剩下的就像你提到的那样,你需要改变
egrep '\.ts$'至
egrep '\.ts.*$'请参见:
sharuzzaman.raslan@NL-4168 ~/test1
$ ls -1
a.ts
a.ts.ap
a.ts.cuts
a.ts.sc
sharuzzaman.raslan@NL-4168 ~/test1
$ ls -1| egrep '\.ts$'
a.ts
sharuzzaman.raslan@NL-4168 ~/test1
$ ls -1| egrep '\.ts.*$'
a.ts
a.ts.ap
a.ts.cuts
a.ts.schttps://stackoverflow.com/questions/14153979
复制相似问题