Linux 重命名功能未正确使用

标签 linux ubuntu terminal unix

我正在尝试在 Ubuntu 的终端中使用重命名命令将字符串附加到某些 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-我的电影.avi。但我认为这不会有什么不同,因为我假设 \w+ 匹配字母数字字符,“-”可能是问题所在吗?

还没有尝试过 Christian 的方法,我希望能够使用重命名命令,或者至少在我尝试其他方法之前了解它为什么不起作用。

最佳答案

我不认为 rename -n 是标准的。你可以这样做:

for i in *.avi; do mv $i String_to_add_$i; done

关于Linux 重命名功能未正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4510533/

相关文章:

ubuntu - 是否有适用于 Android 的 ubuntu appium 检查器

linux - pipe()如何识别文件描述符

C++ 可执行文件在运行时找不到库,即使它位于/usr/lib(在 Linux 上)

c++ - 鲨鱼机器学习库 : undefined reference to `cblas_ddot'

linux - 如何使 D-Bus 服务器端调用异步?

django - 第一次设置django

azure - 如何使用 dotnet core 作为 Docker 中的 Azure 函数来运行 FFProbe?

ruby - ruby 2.3.1 缺少库

Linux : check if something is a file [ -f not working ]

bash - 读取命令 : Display the prompt in color (or enable interpretation of backslash escapes)