我目前有点卡住了,如果文件夹树中的文件名具有以下一项或两项,则尝试调整文件夹树中的文件名:
删除'S00' - 'S99' - 那部分将从文件名中删除。s/[sS](0[1-9]|[1-9][0-9])/
可以做到我认为
任何独立的两位数前面都有一个“E”。/\b([0-9]{2})\b/
以E$1
某种方式查找和替换
示例:这些中的任何一个
[Lorem ipsum] 胡萝卜 07 [Consetetur] [1080p] .mkv
[Lorem ipsum] 胡萝卜 S04 07 [Consetetur] [1080p] .mkv
[Lorem ipsum] 胡萝卜 S04 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
如果任何在该领域具有专业知识的人可以帮助我运行此程序,我们将不胜感激。
请您尝试以下操作:
#!/bin/bash
shopt -s globstar
start_dir="//srv/MEDIA2/" # double // may be meaningless
for name in "$start_dir"/**/*.*; do # search the directory recursively
[[ -f $name ]] || continue # skip if "$name" is not a file
newname=$(sed -E 's/[sS](0[1-9]|[1-9][0-9]) +//; s/\b([0-9]{2})\b/E\1/' <<< "$name")
if [[ "$name" != "$newname" ]]; then # skip if the filenames are the same
echo mv -- "$name" "$newname"
fi
done
echo
如果输出看起来不错,则删除。
我们不必对文件进行排序,因为$i
未使用该变量。
[编辑]
如果你想改变S04E02
到E02
为好,请更换newname=
上面一行:
newname=$(sed -E 's/[sS](0[1-9]|[1-9][0-9]) *//; s/\b([0-9]{2})\b/E\1/' <<< "$name")
区别只是更改+
为*
,这意味着零个或多个空格。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句