如何更改一系列文件名的编号后缀?

如何更改一系列文件名的编号后缀?

这是文件名中带有编号后缀的一系列文件的示例。

  • 屏幕1.png
  • 屏幕2.png
  • 屏幕3.png
  • 屏幕4.png
  • 屏幕5.png
  • 屏幕6.png
  • 屏幕7.png
  • 屏幕8.png

现在,如果我出于某种原因要重命名这些文件,使编号从 2 开始,我必须将 screen1.png 重命名为 screen2.png,将 screen2.png 重命名为 screen3.png,依此类推。但是当我尝试将 screen1.png 重命名为 screen2.png 时,此操作会失败,因为已经有一个同名文件。

在 Windows 中截取一系列屏幕截图时,我喜欢这样命名文件。因此,有时我可能会遇到这种情况。我可能跳过了一张屏幕截图,也许是一张显示某些设置过程的屏幕截图,该过程在时间上发生在屏幕截图 5 之前但屏幕截图 4 之后。那应该是第 5 张,但要保存它,我必须先将 screen5.png 重命名为 screen6.png 以及所有后续文件,以便按时间顺序排列。

改名:

  • 屏幕1.png
  • 屏幕2.png
  • 屏幕3.png
  • 屏幕4.png
  • 屏幕5.png > 屏幕6.png
  • 屏幕6.png > 屏幕7.png
  • 屏幕7.png > 屏幕8.png
  • 屏幕8.png > 屏幕9.png

结果:

  • 屏幕1.png
  • 屏幕2.png
  • 屏幕3.png
  • 屏幕4.png
  • 屏幕6.png
  • 屏幕7.png
  • 屏幕8.png
  • 屏幕9.png

文件添加:

  • 屏幕1.png
  • 屏幕2.png
  • 屏幕3.png
  • 屏幕4.png
  • 屏幕5.png+
  • 屏幕6.png
  • 屏幕7.png
  • 屏幕8.png
  • 屏幕9.png

有没有一个脚本、工具或正则表达式可以让我的日常生活更轻松?我相信你们大多数超级用户都不止一次遇到过这种情况。你愿意分享一下你对这个问题的解决方案吗?

答案1

$ perl -e 'for $i (reverse 5..8) { $j=$i+1; rename screen$i.png screen$j.png }

你可以先运行这个来确认一下

$ perl -e 'for $i (reverse 5..8) { $j=$i+1; print "rename screen$i.png screen$j.png\n" }'
rename screen8.png screen9.png
rename screen7.png screen8.png
rename screen6.png screen7.png
rename screen5.png screen6.png

对于 Windows,您必须使用 " 代替 ' 并使用 qq(...) 代替 "..."。

答案2

您所需要的只是一个具有“多文件重命名”功能的文件管理器(所有名称冲突都会自动解决)。大多数此类管理器允许您在外部编辑器中编辑文件,其中编辑数字比在文件管理器中快得多。至少总指挥官虚幻指挥官有这样的特点。

或者您可以编写小型的单行脚本来通过 shell 执行此操作。

您还可以使用独立脚本进行多个文件重命名,例如病毒,还有更多类似的脚本。它们可以配置为使用其他编辑器,但在我看来,Vim 比其他任何编辑器都更适合这样做,因为它有VisIncr 插件和内置数字增量/减少命令(:help CTRL-A:help CTRL-X)。

另一种方法是使用维夫,支持在选定文件的名称中增加/减少数字(与 Vim 中的键相同)。但它是一个控制台应用程序,主要面向 Vim 上瘾者。

相关内容