我有几个 mp3,需要在扩展名前添加“_p192”。
我试过这个:
for f in *.mp3; do printf '%s\n' "${f%.mp3}_p192.mp3"; done
继这篇文章之后:
但它只是将文件名打印到标准输出,而没有实际重命名文件。
答案1
您查看的答案是针对一个问题,该问题并不要求实际重命名磁盘上的文件,而只是转换终端上报告的文件名称。
这意味着您的解决方案将起作用如果您使用该mv
命令而不是printf
(它只会将字符串打印到终端)。
for f in *.mp3; do mv -- "$f" "${f%.mp3}_p192.mp3"; done
我仍然建议您首先运行循环,printf
以确保名称按照您期望的方式进行转换。
echo
在 前面插入来查看将执行的内容通常是安全的(当您处理诸如,和 之mv
类的潜在破坏性命令的循环时,这样做可能是一个好主意):mv
cp
rm
for f in *.mp3; do echo mv -- "$f" "${f%.mp3}_p192.mp3"; done
或者,使用更好的格式:
for f in *.mp3; do
echo mv -- "$f" "${f%.mp3}_p192.mp3"
done
答案2
您可以使用重命名命令。例如,要在文件扩展名之前添加文本“_p192”,您可以尝试:rename -n 's/(.*)\.mp3/$1_p192.mp3/' *.mp3.
上述命令将重命名当前目录中所有扩展名为 .mp3 的文件。该命令只会将重命名的文件打印到控制台。要实际重命名文件,请删除 -n 标志。
's' 修饰符表示替换。替换的第一部分是用于匹配文件名中的文本的正则表达式。第二部分是替换文本。重命名命令的最后一个参数是一个 glob 模式,用于指示要重命名哪些文件