【问题标题】:Change the name of many files更改多个文件的名称
【发布时间】:2017-06-06 08:08:37
【问题描述】:

如何重命名多个文件。去掉开头的数字。 我有一台 Mac。所有文件都在同一个文件夹中。

模式是:
1、2 或 3 位数字 - 任何名称.php
使用正则表达式,我认为会是:
\d*-(.*).php

例如:
1-marketing.php
2-3D.php
3-没有.php

我想删除开头的数字和破折号。

在示例中是:
营销.php
3D.php
没有.php

我探索了两种方式:
选择文件> ctrl 单击> 重命名项目。这是更改文件名的绝妙方法。但我认为它不能在这种情况下使用。如果我理解,它不支持正则表达式。我说的对吗?

终端。我对终端不是很熟悉。我试过 mv 1-marketing.php marketing.php 它适用于 1 个文件,但我怎样才能对许多文件做同样的事情?我是终端的新手。如果可以,请说明基本情况。

【问题讨论】:

  • 你是在 Windows 还是 Linux 机器上?
  • rename 命令(实际上,有两个同名的命令,但它们或多或少做同样的事情)。
  • @Inian:我在 Mac 中

标签: regex unix terminal


【解决方案1】:

Mac OS X 中打开terminal 应用程序并导航到包含.php 文件的文件夹

cd /my/path/to-php-files/

并在命令行上运行以下命令。

for file in *.php; do mv -v "$file" "${file#*-}"; done

bash 参数扩展语法${file#*-} 从开头删除- 之前的字符,因此理想情况下3-number-without.php 变为number-without.php

(或)使用Mac OS中默认不可用的perl rename实用程序,您可以使用homebrew ?下载并安装它:

brew install rename

然后做

rename -n 's/^(\d+)-(.*)/$2/' *.php

-n 仅用于试运行以查看如何重命名文件,将其删除为

rename 's/^(\d+)-(.*)/$2/' *.php

用于实际重命名。

【讨论】:

  • 什么是-v?,你知道初学者可以在哪里学习编写这种代码的基础知识吗?
  • @Nrc: -v 用于详细操作,它可以将stdout 信息打印为3-marketing.php -> marketing.php
  • @Nrc:从一些基础知识开始是一个很好的做法,比如this page
  • 我放了简化的文件名示例。实名比较复杂,比如:3-without-brand.php,改成brand.php。记住,模式是去掉数字和破折号(只有数字后面的破折号)
  • @Nrc:请参阅我在bash 中的第一个示例以获取更新。我在自己身上测试过,在实际重命名之前自己尝试一下。
猜你喜欢
  • 1970-01-01
  • 2022-06-27
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 2020-03-31
  • 2021-02-03
  • 1970-01-01
相关资源
最近更新 更多