微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将所有 BMP 文件递归转换为 JPG 处理带有空格的路径并在 Linux 下获取文件扩展名

如何解决将所有 BMP 文件递归转换为 JPG 处理带有空格的路径并在 Linux 下获取文件扩展名

我有漂亮的、对全局友好的路径名的文件,例如:

/New XXXX_Condition-selected FINAL/677193  2018-06-08 Xxxx Event-Exchange_FINAL/Xxxxx Dome Yyyy Side/Xxxx_General016 #07-08.BMP

Xxx...Yyyy 字符串是出于隐私原因)。当然格式不是固定的:文件夹层次结构的深度可以变化,但是空格、字母和符号如 _-# 都可以出现,或者作为路径或文件名的一部分,或两者兼而有之。

我的目标是递归所有子文件夹,找到.BMP文件并将它们转换为JPG文件,没有.BMP.JPG之类的“双重”扩展名:换句话说,上面的文件名必须成为

/New XXXX_Condition-selected FINAL/677193  2018-06-08 Xxxx Event-Exchange_FINAL/Xxxxx Dome Yyyy Side/Xxxx_General016 #07-08.JPG

我可以使用 bash shell 工具或 Python。你能帮我吗?

PS 我不需要原始文件,所以它们可以被覆盖。当然,不覆盖它们的解决方案也很好 - 我只会跟进 find . -name "*.BMP" -type f -delete 命令。

解决方法

请你试试:

find . -type f -iname "*.BMP" -exec mogrify -format JPG '{}' +

命令mogrifyImageMagick套件的工具,mogrify -format JPG file.BMP等价于convert file.BMP file.JPG。 您可以添加 convert 接受的相同选项,例如 -qualitymogrify 的好处是它可以一次对多个文件执行相同的转换,而无需指定输出(转换后的)文件名。 如果该命令发出警告:mogrify-im6.q16: length and filesize do not match,则表示BMP头中存储的图像大小与图像数据块的实际大小不一致。 如果 JPG 文件生成正确,您可以忽略警告。否则,您将需要修复导致警告的 BMP 文件。

如果输入文件和输出文件有相同的扩展名(在这样的情况下) 如果 JPG 到 JPG 转换并调整大小),原始文件将被覆盖。 如果他们像这次一样有不同的扩展名,那么原始的 BMP 文件是 没有删除。您也可以使用 find 删除它们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。