使用基于Perl的重命名命令更改以破折号开始的文件名

时间:2019-05-02 11:39:38

标签: perl command-line file-rename

rename是基于Perl的命令行工具,用于重命名多个文件。

我偶然创建了许多文件,它们的名称以破折号或双破折号(---)开头或包含。当我尝试使用重命名来消除破折号时,例如,使用-p的'--the-file-name'

rename 's/-//g' --the-file-name

重命名(可以理解)抱怨'the-file-name'不是重命名命令的允许选项。

有没有办法告诉重命名“ --the-file-name”是文件名而不是选项。

2 个答案:

答案 0 :(得分:3)

许多命令,包括Perl的rename脚本,都支持双破折号来表示命令选项的结尾。因此,要将--the-file-name重命名为the-file-name

rename 's/-//g' -- --the-file-name

Perl的Getopt::Long模块支持此功能,rename使用该模块。

通常,另请参见:https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean-also-known-as-bare-double-dash

答案 1 :(得分:1)

JRFerguson的答案实际上适用于许多命令,而不仅仅是rename

某些替代方法也适用于无法识别--的命令:

  • 在文件名前加上./或文件名的完整路径:

    rename 's/-//g' ./--*
    

    rename 's/-//g' $PWD/--*
    
  • 使用find(还将遍历所有子目录):

    find . -name '-*' -exec rename 's/-//g' '{}' ';'
    

    find . -name '-*' -exec rename 's/-//g' '{}' +