我试图用-
替换所有_
下划线字符所有文件名中的连字符.mat
在一个文件夹内。 I型不同版本不成功的:下命名命令(Perl和Unix shell)中的下划线
rename -f 'w/_/-' *.mat
有人能向我解释什么是错的?
我试图用-
替换所有_
下划线字符所有文件名中的连字符.mat
在一个文件夹内。 I型不同版本不成功的:下命名命令(Perl和Unix shell)中的下划线
rename -f 'w/_/-' *.mat
有人能向我解释什么是错的?
如果您使用a Perl-based rename
(如您的标签所示),则w
不是Perl正则表达式操作。
rename -f 's/_/-/g' *_*.mat
我不明白你是否使用shell重命名或Perl重命名:我不明白你的命令在任何上下文中。
一个Perl的命令行脚本在当前目录重命名所有*.mat
文件看起来像这样
perl -e 'do { (my $f = $_) =~ tr/_/-/; rename $_, $f } for glob "@ARGV"' *.mat
用'@ ARGV'替换'glob“@ARGV”'。你正在通过一些已经被圈起来的东西。这将无论什么都不做,或者根据文件名称给出错误的结果。具体来说,如果任何'mat'文件的名字中有空格,你的模式将失败。 [固定] – ikegami 2012-04-07 20:51:26
谢谢,@Daxim。我仍然使用骆驼书第一版的Perl'rename'的轻度更新版本。 – 2012-04-07 19:02:05
这项工作!感谢@Leffler。起初我尝试过's',但后来改成'w'。但是我不知道我必须在最终的 – escorciav 2012-04-18 04:23:23
@escorciav:AFAIK处使用g,'w'不是Perl替换运算符。最后的'g'确保所有的下划线都被连字符替代。如果你只想映射第一个下划线,那么你不需要'g'。我想有一个机会,脚本会自动应用'g'。 – 2012-04-18 07:15:29