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

Avo*_*oxy 6 regex linux rename

我有三个文件名为

file1.txt
file2.txt
file3.txt
Run Code Online (Sandbox Code Playgroud)

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

mynewfile-1.txt
mynewfile-2.txt
mynewfile-3.txt
Run Code Online (Sandbox Code Playgroud)

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

Gil*_*not 6

像这样 :

rename -n 's/^file/mynewfile-/' ./*.txt
Run Code Online (Sandbox Code Playgroud)

或来自评论:

rename -n 's/^file(\d+)/mynewfile-${1}-test/' ./*.txt
                   ___            ____
                    ^               ^
              capturing group       |
                               captured group
Run Code Online (Sandbox Code Playgroud)

-n当输出看起来不错时,放下开关即可真正重命名。

警告 还有其他同名的工具可能能够也可能无法做到这一点,所以要小心。

作为包一部分的重命名命令util-linux不会。

如果运行以下命令 ( GNU)

$ rename
Run Code Online (Sandbox Code Playgroud)

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

如果不是,则将其设为默认值(通常已经是这种情况)Debian并衍生如下Ubuntu

$ sudo apt install rename
$ sudo update-alternatives --set rename /usr/bin/file-rename
Run Code Online (Sandbox Code Playgroud)

对于 archlinux:

pacman -S perl-rename
Run Code Online (Sandbox Code Playgroud)

对于 RedHat 系列发行版:

yum install prename
Run Code Online (Sandbox Code Playgroud)

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


对于 Gentoo:

emerge dev-perl/rename
Run Code Online (Sandbox Code Playgroud)

对于 *BSD:

pkg install p5-File-Rename
Run Code Online (Sandbox Code Playgroud)

对于 Mac 用户:

brew install rename
Run Code Online (Sandbox Code Playgroud)

如果您的其他发行版没有此命令,请搜索您的软件包管理器来安装它或手动执行

或者您可以使用 perl CPAN:

cpan -i File::Rename
Run Code Online (Sandbox Code Playgroud)

旧的独立版本可以在这里找到


男人重命名


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