我有三个文件,它们的名字是
file1.txt
file2.txt
file3.txt
我正在尝试将它们重命名为
mynewfile-1.txt
mynewfile-2.txt
mynewfile-3.txt
如何使用正则表达式来实现这个功能?
rename -n 's/^file/mynewfile-/' ./*.txt
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
对于Arch Linux:
pacman -S perl-rename
对于RedHat系列的发行版:
yum install prename
emerge dev-perl/rename
对于 *BSD:
pkg install p5-File-Rename
brew install rename
如果您在其他发行版中没有此命令,请搜索您的软件包管理器以安装它或者手动安装
或者您可以使用Perl CPAN:
cpan -i File::Rename
旧的独立版本可以在这里找到这里
rename -n 's/^file(\d+)/mynewfile-${1}-test/' *.txt
- Gilles Quénot