我正在尝试在Ubuntu的终端中使用rename命令将字符串附加到某些avi文件名的开头,如下所示。
rename -n 's/(\w)\.avi$/String_to_add__$1\.avi/' *.avi
所以我期待以下内容:
String_to_add_MyMovie.avi
问题是,当我运行命令时,它将字符串附加到文件名的末尾,所以我最终得到以下内容:
MyMovie_String_to_add_.avi
我不确定我是否有错误的perlexpr语法或其他内容。任何见解都表示赞赏。
更新:
感谢您的建议,我尝试了alno和plundra的建议,并进行了以下修改:
rename -n 's/(\w+)\.avi$/String_to_add__$1\.avi/' *.avi
但现在该文件将字符串插入名称中间,如下所示:
My_String_to_add_Movie
我很抱歉,我忽略了提到标题前面有3个数字值,因此文件名命名为{3 numbers}-My_Movie.avi
,例如001-My_Movie.avi
。但我认为这不会产生影响,因为我假设\w+
匹配字母数字字符,可能' - '是问题吗?
还没有尝试过Christian的方法,我希望能够使用rename命令,或者至少在我尝试不同的方法之前理解为什么它不起作用。
答案 0 :(得分:2)
我不认为重命名-n是标准的。你可以这样做:
for i in *.avi; do mv $i String_to_add_$i; done
答案 1 :(得分:1)
您只需将\w
与单个字符匹配,您需要\w+
,因此完整的行将是:
rename -n 's/(\w+)\.avi$/String_to_add__$1\.avi/' *.avi
答案 2 :(得分:1)
正确版本:
rename -n 's/(\w+)\.avi$/String_to_add__$1\.avi/' *.avi
你只是在\ w之后忘了+,所以它试图只匹配一个角色。