【问题标题】:Rename multiple files with different names to same name and different numbers将多个不同名称的文件重命名为同名不同编号
【发布时间】:2019-01-06 03:03:02
【问题描述】:

我有多张带有随机混乱名称和不同格式(jpeg、jpg、png 等)的卡车图片,我想将它们重命名为“truck1.jpeg”、“truck2.jpg”、“truck3.png”和很快。如何使用rename 命令来实现?

【问题讨论】:

  • 当您需要增加数字时,您将需要某种循环。但是,您的描述不完整。我猜你确实想将foo.png 重命名为truck3.jpg(更改扩展名),我也猜你想保持扩展名原样,我也猜你没问题仅使用一个计数器(而不是为每个不同的扩展使用单独的计数器)。我说的对吗?
  • 这有点取决于"random messy names" 的开头——我们无法猜测它们可能是什么。 (请注意,有 2 个不同的 rename 用于 LInux 的实用程序具有不同的选项,你有哪些?)
  • @DevSolar 是的,你猜对了!对不起,问题不完整,我会编辑它。
  • 你也可以考虑使用 mmv(1)。

标签: regex linux shell


【解决方案1】:

使用bashmv 可能更容易,因为AFAIK 你需要类似bash 的东西来生成数字序列。在bash

i=1
for x in *; do 
  echo $x '->' truck$i.${x##*.}
  mv "$x" truck$i.${x##*.} && i=$((i+1))      
done

for x in * 作用于名称不以点开头且位于当前目录中的所有文件。您可以将 glob 调整为更具独占性,但如果文件位于其他目录中,则需要修改此脚本。同样,可能更容易将文件收集到一个目录中,或者将其放入脚本文件并使用find ... -exec 在多个目录中执行。

这使用i 作为计数器来生成数字。诀窍是${x##*.} 表达式,它获取文件名并删除最后一个点之前的所有内容。这允许您保留文件扩展名并将其重新附加到新名称。 您必须小心正确设置i,否则您将用新的truck1 文件覆盖旧文件。

【讨论】:

  • 如果你不想在重命名失败的情况下增加,你必须&&mv和增加。
  • 如 DevSolar 提到的那样使用 mv ... && ((i++)),或者您可以使用 mv ... || continue
猜你喜欢
  • 2017-06-23
  • 2019-07-29
  • 2022-06-14
  • 2021-12-19
  • 2018-12-28
  • 1970-01-01
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多