我有一些文件机器人无法识别的文件,因为它们具有以下命名方案。
SOAP 3rd Oct 2018 part 1 1080p (USER) [GROUP].mp4
(名称更改)
但是Filebot确实认识到这种命名方案和需求
SOAP 2018 10 01 Part 1 (USER) [GROUP].mp4
我需要一个脚本,该脚本可以根据该日期格式重命名这些文件。我曾尝试阅读正则表达式,但是直截了当。我想了解如何解决这个问题。
答案 0 :(得分:2)
使用此处字符串中的read
将文件名解析为字段,然后使用date
重新格式化。
已更新为处理日期之前元素之间的空格。
$: for f in *mp4
do IFS='!' read a date b <<< "$( echo "$f" | sed -E '
s/^(.+) ([0-9]{1,2})[snrt][tdh] ([JFMASOND][aepuco][nbrylgptvc]) ([0-9]{4}) (.*)/\1!\3-\2-\4!\5/' )"
newName="$( date -d "$date" +"$a %Y %m %d $b" )"
echo "'$f' -> '$newName'"
mv "$f" "$newName"
ls -1 "$newName"
done
'Coronation Street 2nd Nov 2018 part 2 1080p (Deep61) [WWRG].mp4' -> 'Coronation Street 2018 11 02 part 2 1080p (Deep61) [WWRG].mp4'
'Coronation Street 2018 11 02 part 2 1080p (Deep61) [WWRG].mp4'
'SOAP 3rd Oct 2018 part 1 1080p (USER) [GROUP].mp4' -> 'SOAP 2018 10 03 part 1 1080p (USER) [GROUP].mp4'
'SOAP 2018 10 03 part 1 1080p (USER) [GROUP].mp4'
请注意,我在回声中使用了单引号,ls
将其放在输出中,但它们不是文件名的一部分。