代码之家  ›  专栏  ›  技术社区  ›  Avoxy

使用正则表达式重命名文件-Linux

  •  4
  • Avoxy  · 技术社区  · 6 年前

    我有三个文件名为

    file1.txt
    file2.txt
    file3.txt
    

    我正在尝试将其重命名为

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

    如何使用正则表达式来实现这一点?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Gilles Quénot    4 年前

    像这样:

    rename -n 's/^file/mynewfile-/' *.txt
    

    或来自评论:

    rename -n 's/^file(\d+)/mynewfile-${1}-test/' *.txt
                       ___            ____
                        ^               ^
                  capturing group       |
                                   captured group
    

    -n 当输出看起来很好,可以重命名为实数时切换。

    warning 还有其他同名的工具可能无法做到这一点,所以要小心。

    作为 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编写的。