You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu 20.04上用ImageMagick批量将TIF转PNG并保留原名?

批量转换多层文件夹中的TIF图片为PNG(Ubuntu 20.04 + ImageMagick)

方法一:用find命令直接处理

这是最便捷的方式,递归遍历顶层目录下所有TIF文件,自动完成格式转换并保留原路径和文件名(仅替换后缀):

find /path/to/top-directory -type f -name "*.TIF" -exec convert {} $(dirname {})/$(basename {} .TIF).png \;

参数解释:

  • /path/to/top-directory:替换成你的顶层文件夹实际路径
  • -type f:只处理文件,排除文件夹
  • -name "*.TIF":匹配所有大写后缀的TIF文件,若存在小写tif文件,改成-iname "*.tif"可忽略大小写匹配
  • $(dirname {}):提取当前文件的所在目录,保证转换后的PNG和原TIF在同一文件夹
  • $(basename {} .TIF):去掉原文件的.TIF后缀,再拼接.png得到新文件名

如果文件名包含空格,用下面的写法避免报错:

find /path/to/top-directory -type f -name "*.TIF" -print0 | xargs -0 -I {} convert {} $(dirname {})/$(basename {} .TIF).png

方法二:写Shell脚本实现带跳过逻辑的转换

如果需要跳过已转换的PNG文件(避免重复操作),可以用以下脚本:

创建convert_tif_png.sh文件,内容如下:

#!/bin/bash

# 替换成你的顶层目录路径
TOP_DIR="/path/to/top-directory"

# 遍历所有TIF文件
find "$TOP_DIR" -type f -name "*.TIF" | while read -r tif_file; do
    # 生成对应PNG文件名
    png_file="${tif_file%.TIF}.png"
    
    # 检查PNG是否已存在,不存在才转换
    if [ ! -f "$png_file" ]; then
        echo "转换中:$tif_file → $png_file"
        convert "$tif_file" "$png_file"
    else
        echo "已存在,跳过:$png_file"
    fi
done

赋予脚本执行权限并运行:

chmod +x convert_tif_png.sh
./convert_tif_png.sh

方法三:用parallel加速多核转换

如果图片数量极多,想利用CPU多核加速,先安装parallel工具:

sudo apt install parallel

然后执行转换命令:

find /path/to/top-directory -type f -name "*.TIF" | parallel convert {} {.}.png

说明:

  • {.}是parallel的内置占位符,自动生成不带后缀的文件名,无需手动拼接路径
  • 该命令会自动分配任务到多个CPU核心,大幅提升批量转换速度

内容的提问来源于stack exchange,提问作者Aloysia de Argenteuil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:35:21