微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux 子文件夹的连续检查和条件重命名

如何解决linux 子文件夹的连续检查和条件重命名

问题:我目前正在寻找一种方法,可以在 debian 中不断变化的子文件夹树中自动执行重命名过程。

目标:kodi 抓取工具识别具有修改后命名模式的动漫电视节目,而无需从我端为每个新下载的剧集进行任何额外的手动输入。

以下是该场景中文件命名约定的一些常见格式,由于不同的原因,这三种格式都不会被识别。

  1. [NoobSubs] 日本动漫名称 06(1080p 蓝光双音频 8 位 AAC)[4564568].mkv

两个独立的两位数不会被识别为剧集编号。 'e' 前缀是强制性的

  1. [Anime Time] 日本动漫名称 - S04E06 [1080p][HEVC 10bit x265][AAC][Eng Sub](英文动漫名称)。mkv

scraper 使用 anidb 作为它的数据库,它把每一季都当作一个单独的节目——所以它必须作为第一季 (S01) 或根本不抓取,认为第一季。一说“S02+”就找不到了

  1. [SubsPlease] 日本动漫名称 S2 - 11 (1080p) [4864654].mkv

上面两个问题结合起来 - 它必须是 S01 或没有和 E11 而不是 11。

在 stackoverflow 上有人的帮助下,我玩了一些正则表达式

Prepend 'E' to free standing double digits
\b([0-9]{2})\b
Substitution: E$1

使用 S01-S99 删除所有内容

\b[sS](0[1-9]|[1-9][0-9])\b

我假设这里的方法cronjob 命令行或 watch 带有每 10 分钟左右执行一次的脚本。 不幸的是,我对如何构建它一无所知。

[编辑] 好的,我找到了几个我可以使用的部分,并像弗兰肯斯坦怪物一样将其修补在一起,但在目前的状态下,它不会出现。 谁能帮我完成这项工作?

while true; do
#recursive directory watches
inotifywait -e modify,create,delete -r //srv/dev-disk-123/MEDIA2/anime/ && \

#modify any filename in filetree which applies
start_dir="//srv/dev-disk-123/MEDIA2/anime/"
find "$start_dir" -name '*.*' -type f \
  |sort \
  |while read name; do 
     ((i++))
     mv -i "$name" \
#remove season part
       "$(printf 's/[sS](0[1-9]|[1-9][0-9])/' "$(dirname "$name")" $((i)) "$(basename "$name")")"
#prepend E to free standing double digits
       "$(printf 's/\b([0-9]{2})\b/' "$(dirname "$name")" $((i)) "$(basename "$name")")"
#not sure how to add the E$1 here

   done

done

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?