Linux实现图形化选择文件并转码

本文实现一个可以在图形化界面下选择文件并进行编码转换

需求

需要实现在Linux下使用图形化界面选择一个文件并且把该文件的编码由UTF8转换成GBK

需求分析

在Linux下使用命令iconv可以实现把文件的编码进行转换
直接写一个命令或者脚本即可,但是本例需要实现在图形化界面下选择文件
我们使用zenity工具
使用zenity图形化界面参考 https://www.cnblogs.com/minseo/p/15937381.html

流程图

image

脚本如下

#!/bin/bash
#Time: 2022-02-25
#Email:
#Author: Liuym
#File: csv_decode.sh
#Project:
#Description: 本脚本实现把uf8编码转换成gbk编码
#How Use:运行脚本,选择需要转换的csv文档,在当前文档目录生成新文档
#判断系统是否有对应工具函数
#彻底一个参数为命令,如果系统没有这个命令则弹出提示并退出
check_command(){
    echo $1
    command_exe=$1
    command_num=`which ${command_exe}|wc -l`
    if [ ${command_num} -lt 1 ]
        then
            zenity --info --title="警告"  --text="系统没有${command_exe}命令,请联系管理员安装"
            exit
        else
            command_exe=`which ${command_exe}`
   fi
}

csv_devode(){
    #选择需要转换的csv文件
    csv_file=$(zenity --title="请选择需要转换的文件" --file-selection)
    if [ -z ${csv_file} ]
        then
            zenity --info --title="警告"  --text="用户取消操作,请重新运行程序转码"
    fi
    #判断文件编码再决定是否转换
    csv_file_num=`${file_exe} ${csv_file}|grep ISO|wc -l`
    if [ ${csv_file_num} -ge 1 ]
        then
            zenity --info --title="提示"  --text="文件格式正确无需转换"
        else
            nowtime=$(date +%Y%m%d)
            #获取文件文件夹信息
            csv_file_folder=`dirname ${csv_file}`
            #获取文件名信息
            csv_file_name=`echo ${csv_file}|awk -F[/] '{print $NF}'`
            ${iconv_exe}  -f utf8 -t gb18030 ${csv_file}  > ${csv_file_folder}/${nowtime}_${csv_file_name}
            zenity --info --title="提示"  --text="转换成功,转换后文件为${csv_file_folder}/${nowtime}_${csv_file_name}"
    fi
}
main(){
    check_command zenity
    zenity_exe=`which zentiy`
    check_command iconv
    iconv_exe=`which iconv`
    check_command file
    file_exe=`which file`
    csv_devode
}

main

posted @   minseo  阅读(180)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2019-02-27 使用ELK收集分析MySQL慢查询日志
点击右上角即可分享
微信分享提示