如何在 macOS 终端中批量重命名文件?

2023-12-02

我有一个包含一系列文件的文件夹,名为:

prefix_1234_567.png
prefix_abcd_efg.png

我想批量删除一个下划线和中间内容,因此输出将是:

prefix_567.png
prefix_efg.png

相关但不完全解释:

  • 如何使用终端批量重命名文件?
  • 正则表达式在 OS X 终端中批量重命名文件

根据您的具体情况,您可以使用以下内容bash命令 (bash是 macOS 上的默认 shell):

for f in *.png; do echo mv "$f" "${f/_*_/_}"; done

Note: If there's a chance that your filenames start with -, place -- before them[1]:
mv -- "$f" "${f/_*_/_}"

Note: echo前置于mv以便进行空运行。删除它以执行实际的重命名。

您可以从命令行运行它或在脚本中使用它。

  • "${f/_*_/_}"是一个应用程序bash 参数扩展:(第一个)子字符串匹配模式_*_被替换为文字_,有效地从名称中删除中间标记。
  • 注意_*_ is a pattern(通配符表达式,也用于通配符),而不是正则表达式(要了解模式,请运行man bash并搜索Pattern Matching).

如果您发现自己经常批量重命名文件,考虑安装专门的工具,例如基于 Perl 的rename utility。 在 macOS 上,您可以使用流行的包管理器安装它Homebrew如下:

brew install rename

这与顶部的命令等效rename:

rename -n -e 's/_.*_/_/'  *.png

该命令再次执行试运行;消除-n执行实际的重命名。

  • 类似于bash解决方案,s/.../.../执行文本替换,但是 - 与bash - true 常用表达被使用。

[1] The purpose of special argument --, which is supported by most utilities, is to signal that subsequent arguments should be treated as operands (values), even if they look like options due to starting with -, as Jacob C. notes.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 macOS 终端中批量重命名文件? 的相关文章

随机推荐

  • 小吃栏堆栈将始终仅显示最后一个小吃栏

    The Snackbar make show 只会显示最后一个小吃店 与吐司不同 其他小吃店都消失了 for int i 1 i lt 11 i Snackbar make number i Snackbar LENGTH SHORT sh
  • 作为博客发布一部分的图像/徽标的微数据错误

    我在使用 Google 结构化数据测试工具获取发布商徽标和博客文章图像进行验证时遇到问题 我目前拥有的一些示例标记是
  • 如何查看我的表单当前是否位于其他表单之上?

    基本上 我如何判断我的程序是否位于所有其他程序之上 一个相当简单的方法是 P Invoke获取前景窗口 并比较返回到应用程序的form Handle属性的HWND using System using System Runtime Inte
  • xcode 中阿拉伯字符串反转

    我的 Xcode 有问题 例如我要NSLog 当我写的时候它会显示NSLog 他们是相反的 我要的是阿拉伯语和波斯语 tnx 实际上它是编辑器的问题 所以更改编辑器 就像我在中打开文件一样TextEdit并写了阿拉伯语和波斯语 这对我来说是
  • 某种类型元素的 JS 事件监听器?

    有没有办法为某种类型的 html 元素添加某种监听器 例如 如果我想在用户单击时调用一个函数anyp元素 最简单的答案是使用addEventListener 如果你想要一个特定的 html 标签 就像我想要的那样我的问题那么你会在那里找到答
  • 如何在Hibernate/JPA中为每个持久单元执行differnet import.sql?

    我在 JPA Hibernate 配置中配置了两个持久性单元 现在我需要为每个持久单元执行不同的 import sql 如何指定应为每个持久性单元执行哪个 import sql 根据 Hibernate 的文档 我应该将 import sq
  • HTML5 Boilerplate jQuery 库后备如何工作?

    这是一个关于 html5 样板和 javascript 的初学者问题 但我似乎无法在任何地方找到答案 所以这里是
  • AngularJS:自定义过滤器和 ng-repeat

    我是 AngularJS 新手 我正在构建一个小型概念验证汽车租赁列表应用程序 该应用程序提取一些 JSON 并通过 ng repeat 和几个过滤器呈现该数据的各种位
  • WSO2ESB 是否可以使用标头发送电子邮件

    我希望使用 Header mediator 向我的客户发送电子邮件 是否可以这样做 我的代理是这样的
  • Java:使用unicode上划线显示平方根时字符串的长度?

    在 Java 中 我创建了一个使用 unicode 和上划线的字符串 因为我试图显示数字的平方根 我需要知道某些格式问题的字符串长度 当在 unicode 中使用组合字符时 查找字符串长度的常用方法似乎失败 如以下示例所示 任何人都可以帮我
  • 解包函数返回到 pandas 数据框列

    我有一个现有的数据框 radar locations 其中包含 除其他外 纬度和经度坐标 对于该信息 我需要添加国家 地区和州列 因此我编写了一个函数来执行反向地理编码并返回所需的两个值return geodata state geodat
  • Android 版 Chrome 和桌面版 Chrome 有什么区别?

    我知道两者都使用相同的 webkit 版本 537 36 并且都使用相同的 javascript 引擎 V8 但是它们之间还有其他主要区别吗 我有一个网络应用程序 可以对桌面 Chrome 进行自动测试 但对 Android 上的 Chro
  • Python 中 matplotlib 和 seaborn 之间的绘图不一致

    我正在尝试使用添加错误栏plt errorbar to a pointplot在海博恩 import matplotlib import matplotlib pylab as plt import seaborn as sns impor
  • 用于连接和删除公共前缀的 SQL 查询

    我有一些数据 id ref 1 3536757616 1 3536757617 1 3536757618 并想要得到结果 1 3536757616 7 8 所以本质上数据是在 id 上聚合的 引用连接在一起 用斜杠 分隔 但删除了任何公共前
  • 如何获取 perl 系统调用的 CPU 时间?

    我有一个 perl 脚本 它使用以下命令调用外部可执行文件system 我想测量这些外部程序占用的 CPU 秒数 理想情况下 我想使用内置的 shell 来运行它们time命令 这是在 Linux 系统上 像这样的东西 system tim
  • firebase 云函数 context.auth 字段是否适用于 firestore? [复制]

    这个问题在这里已经有答案了 使用firestore时是否可以通过context auth属性获取触发云功能的用户的uid exports updateReport functions firestore document groups gr
  • PostgreSQL 和 JDBC 的 ClassNotFoundException

    我在与 Java 和 PostgreSQL 数据库建立连接时遇到一些困难 我已经下载了JDBC4 Postgresql 驱动程序 版本 9 2 1002驱动程序并正确设置应用程序 ClassPath 我的代码如下 import java s
  • socket.io 房间或命名空间?

    我正在研究 nodejs socket io 进行实时聊天 我需要一些关于实施房间的建议 使用命名空间或使用房间功能来完全隔离聊天组 哪个更好 房间和命名空间之间真正的技术区别是什么 资源使用情况有区别吗 这就是命名空间和房间所具有的共同点
  • 强制 CMake 查找 x64 位库而不是 x32

    因此 我一直在 stackoverflow 和其他一些论坛中查找如何强制 CMake 查找 x64 库而不是 x32 但它并没有多大帮助 当我做 find package Boost 1 67 0 COMPONENTS atomic REQ
  • 如何在 macOS 终端中批量重命名文件?

    我有一个包含一系列文件的文件夹 名为 prefix 1234 567 png prefix abcd efg png 我想批量删除一个下划线和中间内容 因此输出将是 prefix 567 png prefix efg png 相关但不完全解