使用正则表达式重命名文件 - 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的主要内容,如果未能解决你的问题,请参考以下文章