使用正则表达式重命名文件 - Linux

Posted

技术标签:

【中文标题】使用正则表达式重命名文件 - Linux【英文标题】:Renaming files using regular expressions - Linux 【发布时间】:2018-08-22 09:39:24 【问题描述】:

我有三个文件名为

file1.txt
file2.txt
file3.txt

我正在尝试将它们重命名为

mynewfile-1.txt
mynewfile-2.txt
mynewfile-3.txt

我将如何使用正则表达式来解决这个问题?

【问题讨论】:

【参考方案1】:

像这样:

rename -n 's/^file/mynewfile-/' *.txt

或来自 cmets:

rename -n 's/^file(\d+)/mynewfile-$1-test/' *.txt
                   ___            ____
                    ^               ^
              capturing group       |
                               captured group

当输出看起来不错时删除-n开关以真正重命名。

还有其他同名的工具可能会也可能不会这样做,所以要小心。

util-linux 包中的重命名命令不会。

如果您运行以下命令 (GNU)

$ rename

你看到perlexpr,那么这似乎是正确的工具。

如果不是,则将其设为 Debian 和派生类 Ubuntu 的默认值(通常已经如此):

$ sudo apt install rename
$ sudo update-alternatives --set rename /usr/bin/file-rename

对于archlinux:

pacman -S perl-rename

对于 RedHat 系列发行版:

yum install prename

“prename”包位于 EPEL 存储库中。


对于 Gentoo:

emerge dev-perl/rename

对于 *BSD:

pkg install p5-File-Rename

对于 Mac 用户:

brew install rename

如果您在其他发行版中没有此命令,请搜索您的包管理器进行安装或do it manually

或者你可以使用 perl CPAN:

cpan -i File::Rename

可以找到旧的独立版本here


man rename


这个工具最初是由 Perl 的父亲 Larry Wall 编写的。

【讨论】:

如果我想把它们变成 mynewfile1-test.txt 我该怎么做? rename -n 's/^file(\d+)/mynewfile-$1-test/' *.txt

以上是关于使用正则表达式重命名文件 - Linux的主要内容,如果未能解决你的问题,请参考以下文章

linux下怎么批量重命名这些文件

使用正则表达式重命名文件名

使用 python 重命名文件 - 正则表达式

正则表达式批量重命名 OS X 终端中的文件

使用正则表达式重命名命令不起作用

在 bash 中使用正则表达式复制和重命名多个文件