【问题标题】:Renaming files using regular expressions - Linux使用正则表达式重命名文件 - Linux
【发布时间】:2018-08-22 09:39:24
【问题描述】:

我有三个文件名为

file1.txt
file2.txt
file3.txt

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

mynewfile-1.txt
mynewfile-2.txt
mynewfile-3.txt

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

【问题讨论】:

    标签: regex linux rename


    【解决方案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
    猜你喜欢
    • 2013-08-31
    • 2019-06-12
    • 1970-01-01
    • 2012-08-02
    • 2015-04-23
    • 2011-09-14
    • 2017-08-10
    相关资源
    最近更新 更多