【问题标题】:Changing filename date format更改文件名日期格式
【发布时间】:2019-04-09 22:13:28
【问题描述】:

我有一些 filebot 无法识别的文件,因为它们具有以下命名方案。

SOAP 3rd Oct 2018 part 1 1080p (USER) [GROUP].mp4

(名称已更改)

但是,Filebot 确实可以识别这种命名方案并需要

SOAP 2018 10 01 Part 1 (USER) [GROUP].mp4

我需要一个可以根据该日期格式重命名这些文件的脚本。我曾尝试阅读正则表达式,但它直接在我的脑海中。我想了解如何解决这个问题。

【问题讨论】:

  • 3rd Oct 2018 != 2018 10 01
  • 文件名格式中是否有空格和括号?能否请您展示两种类型的真实文件名示例。
  • 是的。 Coronation Street 2nd Nov 2018 part 2 1080p (Deep61) [WWRG].mp4

标签: regex bash shell rename batch-rename


【解决方案1】:

使用此处字符串中的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'

请注意,我在 echo 中使用了单引号,ls 将它们放在其输出周围,但它们不是文件名的一部分。


### 两年后更新——

我从不喜欢在循环的每次迭代中生成 read/sed 对。如果你有几十万个文件,那将变得非常慢。这是替代方案的核心。

for f in *mp4
do if [[ "$f" =~ ^(.+)\ ([0-9]{1,2})[snrt][tdh]\ ([JFMASOND][aepuco][nbrylgptvc])\ ([0-9]{4})\ (.*) ]]
   then echo "with Bash Match: "
        newName="$( date -d "${BASH_REMATCH[3]}-${BASH_REMATCH[2]}-${BASH_REMATCH[4]}" +"${BASH_REMATCH[1]} %Y %m %d ${BASH_REMATCH[5]}" )"
        echo "oldName:'$f' -> newName:'$newName'"
   else echo skipping "'$f'"
   fi
done

【讨论】:

  • 专注于困难的部分。 Cameron,您需要我删除分辨率和大写部分吗?
  • 硬部分还可以
  • Emmerdale 1st Oct 2018 1080p (Deep61) [WWRG].mp4 。如果 (Deep61) [WWRG] 被删除,那将是完美的。额外的好处是将其移动到已处理的文件夹中。
  • 顺便说一句,它工作得很好。在运行脚本之前,奇怪的文件在 [WWRG] 和 .mp4 之间有一个空格,并且仍然存在,但这不是问题。
  • 不适用于Coronation Street 2nd Nov 2018 part 2 1080p (Deep61) [WWRG].mp4
猜你喜欢
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 2016-11-22
相关资源
最近更新 更多