使用基于 perl 的重命名命令更改以破折号开头的文件名
Using the perl-based rename command to change filenames commencing with dashes
rename
是一个基于 perl 的命令行工具,用于重命名多个文件。
我无意中创建了许多名称以破折号或双破折号(-
或 --
)开头或包含的文件。当我尝试使用重命名来摆脱破折号时,例如,'--the-file-name' 使用
rename 's/-//g' --the-file-name
rename(可以理解)抱怨 'the-file-name' 不是 rename 命令允许的选项。
有没有办法告诉 rename '--the-file-name' 是一个文件名而不是一个选项。
许多命令,包括 Perl 的 rename
脚本,都支持双破折号来表示命令选项的结尾。因此,将 --the-file-name
重命名为 the-file-name
:
rename 's/-//g' -- --the-file-name
Perl 的 Getopt::Long 模块支持此功能并被 rename
使用。
JRFerguson 的答案实际上适用于许多命令,而不仅仅是 rename
。
一些替代方法也适用于无法识别的命令 --
:
在文件名前加上 ./
或完整路径:
rename 's/-//g' ./--*
或
rename 's/-//g' $PWD/--*
使用find
(也会遍历任何子目录):
find . -name '-*' -exec rename 's/-//g' '{}' ';'
或
find . -name '-*' -exec rename 's/-//g' '{}' +
rename
是一个基于 perl 的命令行工具,用于重命名多个文件。
我无意中创建了许多名称以破折号或双破折号(-
或 --
)开头或包含的文件。当我尝试使用重命名来摆脱破折号时,例如,'--the-file-name' 使用
rename 's/-//g' --the-file-name
rename(可以理解)抱怨 'the-file-name' 不是 rename 命令允许的选项。
有没有办法告诉 rename '--the-file-name' 是一个文件名而不是一个选项。
许多命令,包括 Perl 的 rename
脚本,都支持双破折号来表示命令选项的结尾。因此,将 --the-file-name
重命名为 the-file-name
:
rename 's/-//g' -- --the-file-name
Perl 的 Getopt::Long 模块支持此功能并被 rename
使用。
JRFerguson 的答案实际上适用于许多命令,而不仅仅是 rename
。
一些替代方法也适用于无法识别的命令 --
:
在文件名前加上
./
或完整路径:rename 's/-//g' ./--*
或
rename 's/-//g' $PWD/--*
使用
find
(也会遍历任何子目录):find . -name '-*' -exec rename 's/-//g' '{}' ';'
或
find . -name '-*' -exec rename 's/-//g' '{}' +