rename
是基于Perl的命令行工具,用于重命名多个文件。
我偶然创建了许多文件,它们的名称以破折号或双破折号(-
或--
)开头或包含。当我尝试使用重命名来消除破折号时,例如,使用-p的'--the-file-name'
rename 's/-//g' --the-file-name
重命名(可以理解)抱怨'the-file-name'不是重命名命令的允许选项。
有没有办法告诉重命名“ --the-file-name”是文件名而不是选项。
答案 0 :(得分:3)
许多命令,包括Perl的rename
脚本,都支持双破折号来表示命令选项的结尾。因此,要将--the-file-name
重命名为the-file-name
:
rename 's/-//g' -- --the-file-name
Perl的Getopt::Long模块支持此功能,rename
使用该模块。
答案 1 :(得分:1)
JRFerguson的答案实际上适用于许多命令,而不仅仅是rename
。
某些替代方法也适用于无法识别--
的命令:
在文件名前加上./
或文件名的完整路径:
rename 's/-//g' ./--*
或
rename 's/-//g' $PWD/--*
使用find
(还将遍历所有子目录):
find . -name '-*' -exec rename 's/-//g' '{}' ';'
或
find . -name '-*' -exec rename 's/-//g' '{}' +