【问题标题】:How to rename bunch of files via terminal, keeping the filenames prefix and suffix and removing wildcard in the middle? [closed]如何通过终端重命名一堆文件,保留文件名的前缀和后缀并删除中间的通配符? [关闭]
【发布时间】:2019-02-26 06:37:34
【问题描述】:

给定 +400 个文件,例如:

Remi_Brun_-blablabla_blalala-ASpi777XisA.en.vtt
Remi_Brun_-not_important_but_here_to_nag-ZIBcQ5tMB2U.en.vtt
Remi_Brun_-still_some_wildcard_noise_here-hOxG4g05z4w.en.vtt
...

鉴于此正则表达式匹配这些标题:

(Remi_Brun)(_.+)([a-zA-Z0-9-_]{11}.en.vtt)

我想将我的文件重命名为这样的文件名:

Remi_Brun-ASpi777XisA.en.vtt
Remi_Brun-ZIBcQ5tMB2U.en.vtt
Remi_Brun-hOxG4g05z4w.en.vtt
...

如何保留speaker name前缀,去除中间的变量noise,然后保留finale 11个字符youtube id和扩展后缀?

【问题讨论】:

  • 为什么你的正则表达式中有'fr'?是否也要将所有 fr 重命名为 en?

标签: regex bash rename


【解决方案1】:

如果您想删除 youtube id 之前第一个和最后一个 - 之间的所有内容,同时允许任何非零大小的语言代码,那么这将起作用:

rename 's/-.*-([a-zA-Z0-9-_]{11}\..+\.vtt)/-\1/' Remi*

or 以获得更易读的答案:

rename 's/(Remi_Brun)(_.+)([a-zA-Z0-9-_]{11}.en.vtt)/$1-$3/' Remi*

编辑: 我之前的回答

rename 's/-.*-/-/' Remi*  #didn't account for hyphens in youtube id

【讨论】:

  • 您的回答确实回答了我的 S.O.我写的问题:) 至于我的真实生活情况,Youtube ID 可能有 11 个字符长,例如[a-zA-Z0-9-_]{11},所以它确实可以包含-。你的回答很机智,我没想到,它可能对其他用户有帮助。
  • 谢谢。我对其进行了编辑以允许在视频 ID 中使用 -
  • 鉴于我基于您的回答,我将更具可读性的命令添加到您的回答中。我现在可以接受您的答案,因为它包含您的有效和直接以及可读的答案。谢谢 ! :D
猜你喜欢
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
相关资源
最近更新 更多