如何使用 Perl 的重命名将文件夹中所有文件的名称替换为自定义字符串和索引?我怀疑答案很简单。尽管如此,我还无法从手册或此处的其他答案中将其拼凑在一起。
例子
在文件夹中foo
我有文件
long complicated name 1.png
random_string_of_letters.png
12312434235512351.png
etc.
唯一的共同点是它们具有相同的扩展名。我想给它们重命名
bar1.png
bar2.png
bar3.png
etc.
我正在使用 Perl 的重命名(通过自制软件安装)。我最接近的是另一个答案
中的这段代码rename -nvs searchword replaceword *
。但我无法适应它来做我想做的事。我习惯将其视为*
通配符,但这里似乎有不同的目的。我知道如果您-s
从命令中删除,则可以使用正则表达式,并且该正则表达式与“正常”正则表达式不同(请参阅上面链接的同一答案的评论)。但不知道如何使用它。
编辑
当我运行时,brew info rename
我得到以下信息:
==> rename: stable 1.601 (bottled), HEAD
Perl-powered file rename script with many helpful built-ins
http://plasmasturm.org/code/rename
/opt/homebrew/Cellar/rename/1.601 (4 files, 44.9KB) *
Poured from bottle using the formulae.brew.sh API on 2023-08-17 at 11:03:56
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/r/rename.rb
您可以列出目录中的所有文件
然后您可以迭代此列表并重命名每个文件。
例如:
这假设了两件事:
$dir
字符串以/
(很容易修复)结尾,每个文件名都有一个扩展名(也很容易修复)。这是一个替代方案
如果你不懂 Perl,那么你可以试试这个:
这不会修改您系统中的任何内容。像这样运行:
其中
basename
是您想要在文件中使用的基本名称,directory
是您的文件所在的位置,output.sh
是脚本名称。这将生成一个 bash 风格的脚本,其中包含重命名文件的命令。您可以在运行任何操作之前验证每个重命名命令。
从文档来看,看起来像下面这样:
添加引线
-n
以进行试运行。(可选)添加
-v
以获取更多信息。