微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何批量重命名许多文件以添加顺序编号处理字符串,如果前面的文本更改,则重新启动?

如何解决如何批量重命名许多文件以添加顺序编号处理字符串,如果前面的文本更改,则重新启动?

编辑:我最初的目标是在 Pro Tools 的“批量重命名”对话框中使用正则表达式。 Pro Tools 中的正则表达式不支持这样的特定内容。问题已转移到如何通过使用 Automator 应用和 Run Shell Script 命令在 Finder 中批量重命名文件来实现以下目标。

原始问题:

我想在支持使用正则表达式(Pro Tools)批量重命名的程序中批量重命名许多项目。我需要在“查找”和“替换”字段中输入什么来用每次在 {{1} 之前的字符串重新开始的顺序编号(1、2、3 等)替换 _rr 之前的所有文本} 变化?

我已经了解了 Find: _rr,但我不知道如何创建一个基于前面的文本模式/更改重新启动的数字序列。

举个具体的例子,拿这组数据:

_rr(.*)

什么正则表达式会产生以下结果?

Casio AA_12_Test_A3_rr_01-03
Casio AA_12_Test_A3_rr_01-04
Casio AA_12_Test_A4_rr_01-03
Casio AA_12_Test_A4_rr_01-05
Casio AA_12_Test_A4_rr_01-06
Casio AA_12_Test_B5_lng_rr_01-04
Casio AA_12_Test_B5_lng_rr_01-05
Casio AA_12_Test_B5_sht_rr_01-02
Casio AA_12_Test_B5_sht_rr_01-05
Casio AA_12_Test_E4_sht_rr_01-02
Casio AA_12_Test_E4_sht_rr_01-07
Casio AA_12_Test_E5_sht_rr_01-04
Casio AA_12_Test_E5_sht_rr_01-05-01
Casio AA_12_Test_F5_lng_rr_01-05
Casio AA_12_Test_G4_lng_rr_01-04-01

解决方法

我认为 Pro Tools 的“批量重命名”功能无法完成您想要的计数。

您提到使用带有 shell 脚本的 automator。将“pass input”设置为“stdin”并创建如下脚本:

#!/bin/sh

dir="/somewhere/to/keep/undo/logs"
now=$(date +%Y%m%d%H%M%S.$$)
logfile="$dir/undo.$now.command"

echo '#!/bin/sh' >"$logfile"
chmod +x "$logfile"

sort | awk -F_rr_ -v undo="$logfile" '
   function q(s,d){
      d="\47"
      gsub(d,"&\\\\&&",s)
      return d s d
   }
   !a[$1]++{ i=1 }
   $2{
      src=q($0)
      split($2,a,/^.*\./)
      if(a[2])ext="."a[2]
      dst=q($1"_rr"(i++)ext)
      print("mv",dst,src) >> undo
      print("mv "src" "dst)
   }
'

这是未经测试的,因为我没有 Mac。

  • 为撤销脚本创建(希望是唯一的)名称
  • echo - 初始化撤销脚本
  • chmod - 使撤销脚本可执行
  • sort - 确保文件名列表(从标准输入读取)是有序的
  • -F_rr_ - 告诉 awk 在 _rr_
  • 上拆分输入记录
  • q(s) - 单引号 s 以确保奇数字符在传递给 shell 时不会引起问题
  • !a[$1]++ - 仅匹配第一次看到特定 $1 的常见习语。此处用于重置计数器 i
  • $2{ - 只有在文件名包含 _rr_ 时才执行操作(如果没有,$2 将为空
  • split - 查找文件扩展名,存储在数组元素 a[2]
  • if(a[2])... - 如果找到文件扩展名,初始化 ext
  • print(...) >> undo - 将撤销命令附加到撤销脚本
  • print(...) - 生成实际的重命名命令

要真正重命名文件,请将第二个 print 替换为 system


MacOS 似乎在从 finder 双击时关心扩展名。 This answer 表示带有 .command 扩展名的可执行脚本将在终端窗口中运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。