【问题标题】:Rename multiple values in file name重命名文件名中的多个值
【发布时间】:2016-01-15 08:29:05
【问题描述】:

我有很多这样的文件:

nsh_nyi.mp4
ott_pit.mp4
chi_wsh.mp4
nyr_mtl.mp4
dal_tbl.mp4
stl_edm.mp4
min_ari.mp4

我想用 onliner 重命名所有这些文件,如下所示:

nsh_nyi.mp4 becomes nashville predators - new york islanders.mp4
ott_pit.mp4 becomes ottawa senators - pittsburgh penguins.mp4

是否可以在 linux 中使用一个命令,使用 awk、rename、sed 等? 我尝试像这样批量重命名这些文件:

rename s/nsh/nashville\  predators/g

它将替换文件的一部分,但不会替换第二部分:nyi

当然,我将所有这些俱乐部的名称都放在一个文件中。 结果是:

nsh_nyi.mp4
Can't rename nsh_nyi.mp4 nsh_New-york-islanders.mp4: No such file or directory
ott_pit.mp4
Can't rename ott_pit.mp4 ott_Pittsburgh-penguins.mp4: No such file or directory

【问题讨论】:

  • 1) 文件循环 2) 拆分文件名 3) 分别进行翻译 4) 重命名 5) 祝你好运 - 让我们知道您遇到的困难。
  • 您的俱乐部名称文件内容是什么样的? (在该文件上显示head?)
  • 其实我明白了,谢谢帮助
  • @Jaur:然后发布答案。

标签: bash awk sed rename


【解决方案1】:

您可以通过将它们全部用分号分隔来替换多个模式,如下所示。

rename 's/nsh/nashville\  predators/g;s/ott/ottawa\ senators/g'

Reference

【讨论】:

  • 这是否也会在被替换的文本中进行替换?大概吧。对其进行测试,并可能删除/修复您的答案。
猜你喜欢
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多