更改放错位置的文件扩展名

更改放错位置的文件扩展名

我不小心用扩展名重命名了大量文件.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

男子重命名其他信息

相关内容