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)
我将如何使用正则表达式来解决这个问题?
像这样 :
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 编写的。