Linux實現圖形化選擇檔案並轉碼
阿新 • • 發佈:2022-02-27
本文實現一個可以在圖形化介面下選擇檔案並進行編碼轉換
需求
需要實現在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