【发布时间】:2021-07-12 03:37:58
【问题描述】:
我目前有点卡住,尝试调整文件夹树中的文件名(如果它们具有以下一项或两项):
-
删除'S00' - 'S99' - 这部分是要从文件名中删除。
s/[sS](0[1-9]|[1-9][0-9])/我认为可以做到这一点 -
任何独立的两位数前面都有一个“E”。找到
/\b([0-9]{2})\b/并以某种方式替换E$1
示例: 这些中的任何一个
-
[lorem ipsum] dolor sit amet 07 [consetetur][1080p].mkv
-
[lorem ipsum] dolor sit amet S04 07 [consetetur][1080p].mkv
-
[lorem ipsum] dolor sit amet S04 E07 [consetetur][1080p].mkv
改为
- [lorem ipsum] dolor sit amet E07 [consetetur][1080p].mkv
在它们各自的子文件夹中。
最终目标是在文件出现时自动重命名文件(我必须在完成此操作后弄清楚后一点),以便 kodi 刮板可以识别剧集
正如您所见,这就是我所取得的进展,它仍然是一团糟,因为我不久前在这里找到了这个重命名脚本,但我不知道如何正确应用正则表达式,我只是把它拍了进去
#!/bin/bash
start_dir="//srv/MEDIA2/"
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")")"
done
目前返回
//home/user/./rnscript.sh: line 14: s/[sS](0[1-9]|[1-9][0-9])/: No such file or directory
//home/user/./rnscript.sh: line 16: s([0-9]{2}/: No such file or directory
如果有这方面的专业知识的人可以帮助我完成这项工作,将不胜感激。
【问题讨论】:
-
增量变量
$i的作用是什么? -
我最初认为它是为了在重命名后保持运行,直到它以这种方式检查所有文件。但现在我意识到这是另一个脚本的剩余部分,该脚本旨在为名称添加数字计数。啊鲤鱼好吧,这比我想象的还要混乱