我不小心用扩展名重命名了大量文件.mp4
。幸运的是,原始扩展名已保留在文件名中(例如simon.says.nfo.mp4
)
我现在如何从这些文件中删除 mp4 部分?
由于我拥有的命名系统,我不能只进行查找,*.*.mp4
使用查找/替换组合会更容易。
答案1
删除当前目录下.mp4
所有带有该扩展名的文件的扩展名:.nfo.mp4
for fname in ./*.nfo.mp4; do
newfname="$( basename "$fname" .mp4 )"
mv -i "$fname" "$newfname"
done
该basename
实用程序既删除路径(仅保留文件名),又能够一次性删除后缀。我们可以删除此处的路径,而无需再次添加它,因为我们只对当前目录感兴趣。使用newfname="${fname%.mp4}"
参数扩展可以达到相同的效果(它会删除后缀.mp4
,但不会从 中删除初始路径$fname
,尽管这在这里不是问题)。
我使用mv -i
它是为了让您可以手动确认任何mv
会覆盖现有文件的操作。
为了进行测试,以下内容只会打印出会发生的情况:
for fname in ./*.nfo.mp4; do
newfname="$( basename "$fname" .mp4 )"
printf 'Want to rename "%s" into "%s"\n' "$fname" "$newfname"
## mv -i "$fname" "$newfname"
done
答案2
“rename”是一个实用程序,可以完全满足您的需要:
rename 's/.mp4//' *.mp4
男子重命名其他信息