将文本添加到文件名的末尾但在扩展名之前

Leo*_*ino 8 bash rename

我有几个 mp3,需要在扩展名前添加“_p192”。

我试过这个:

for f in *.mp3; do printf '%s\n' "${f%.mp3}_p192.mp3"; done

关注这个帖子:

在扩展名之前向文件名添加文本

但它只是将文件名打印到标准输出而不实际重命名文件。

Kus*_*nda 11

您看到的答案是针对一个不要求实际重命名磁盘上文件的问题,而只是转换终端上报告的文件名称。

这意味着如果您使用mv命令而不是printf(它只会将字符串打印到终端),您的解决方案将起作用。

for f in *.mp3; do mv -- "$f" "${f%.mp3}_p192.mp3"; done
Run Code Online (Sandbox Code Playgroud)

我仍然建议您先运行printf循环以确保名称按照您期望的方式进行转换。

通常只echo在 前面插入mv以查看将执行的内容通常是安全的(当您处理mv,cp和等潜在破坏性命令的循环时,这样做可能是个好主意rm):

for f in *.mp3; do echo mv -- "$f" "${f%.mp3}_p192.mp3"; done
Run Code Online (Sandbox Code Playgroud)

或者,使用更好的格式:

for f in *.mp3; do
    echo mv -- "$f" "${f%.mp3}_p192.mp3"
done
Run Code Online (Sandbox Code Playgroud)