Archlinux - 删除不同子目录中具有日期名称的文件

Archlinux - 删除不同子目录中具有日期名称的文件

我需要你的帮助来找到一种方法来根据名称中的日期格式定期删除多个子目录中的某些文件。

我在 youtube-dl 中使用了这个脚本:

youtube-dl --yes-playlist --download-archive archive.txt --continue --ignore-errors --no-overwrites --dateafter now-1week -o '%(uploader)s/%(upload_date)s - %(title)s' -a rss.txt

使用脚本我有这个:

Videos
│   rss.txt
│   archive.txt    
└───Artiste_Youtube_01
│   │   20170906 - Title.mkv
│   │   YYYYMMDD - Title.mkv
|   
└───Artiste_Youtube_02
    │   YYYYMMDD - Title.mkv
    │   YYYYMMDD - Title.mkv

我想自动删除超过 1week+1day 的 mkv。

我已经看到了这个:

find ./my_dir -mtime +10 -type f -delete

它适用于创建日期但不适用于文件的命名日期。

你能帮助我吗?谢谢。

答案1

您必须将名称前缀与日期进行比较。您可以使用以下方式轻松获取比较项:date -d '-10 days' +%Y%m%d。然后循环遍历文件:

cutDate=$(date -d '-10 days' +%Y%m%d)
for f in */*.mkv
do
    prefix=$(sed -r 's:.*/([0-9]{8}) -.*:\1:' <<<"$f")
    [[ $prefix < $cutDate ]] && rm "$f"
done

如果有更多子目录级别,请在for模式中添加更多星号: for f in */*/*.mkv

警告:未经测试

相关内容