Linux实现图形化选择文件并转码
本文实现一个可以在图形化界面下选择文件并进行编码转换
需求
需要实现在Linux下使用图形化界面选择一个文件并且把该文件的编码由UTF8转换成GBK
需求分析
在Linux下使用命令iconv可以实现把文件的编码进行转换
直接写一个命令或者脚本即可,但是本例需要实现在图形化界面下选择文件
我们使用zenity工具
使用zenity图形化界面参考 https://www.cnblogs.com/minseo/p/15937381.html
流程图
脚本如下
#!/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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2019-02-27 使用ELK收集分析MySQL慢查询日志