我有三个文件名为
file1.txt file2.txt file3.txt
我正在尝试将它们重命名为
mynewfile-1.txt mynewfile-2.txt mynewfile-3.txt
如何使用正则表达式来实现这一点?
7rfyedvj1#
像这样:
rename -n 's/^file/mynewfile-/' ./*.txt
或来自评论:
rename -n 's/^file(\d+)/mynewfile-${1}-test/' ./*.txt ___ ____ ^ ^ capturing group | captured group
当输出看起来很好时,删除-n开关,以真实的重命名。
-n
还有其他同名的工具可能无法执行此操作,因此请小心。作为util-linux包一部分的rename命令不会。如果运行以下命令(GNU)
util-linux
GNU
$ rename
看到perlexpr,那么这似乎是正确的工具。如果没有,则将其作为Debian和衍生产品(如Ubuntu)的默认值(通常已经是这种情况):
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
旧的独立版本可以找到hereman rename这个工具最初是由Perl之父Larry Wall编写的。
1条答案
按热度按时间7rfyedvj1#
像这样:
或来自评论:
当输出看起来很好时,删除
-n
开关,以真实的重命名。还有其他同名的工具可能无法执行此操作,因此请小心。
作为
util-linux
包一部分的rename命令不会。如果运行以下命令(
GNU
)看到
perlexpr
,那么这似乎是正确的工具。如果没有,则将其作为
Debian
和衍生产品(如Ubuntu
)的默认值(通常已经是这种情况):对于archlinux:
对于RedHat家族发行版:
'prename'包位于EPEL存储库中。
对于Gentoo:
对于 *BSD:
对于Mac用户:
如果在其他发行版中没有此命令,请搜索软件包管理器以安装它或do it manually
或者你可以使用perl CPAN:
旧的独立版本可以找到here
man rename
这个工具最初是由Perl之父Larry Wall编写的。