1. 程式人生 > >linux批量轉換整個目錄下的檔案編碼為UTF-8

linux批量轉換整個目錄下的檔案編碼為UTF-8

#!/bin/bash - 
#===============================================================================
#
#          FILE: conv.sh
# 
#         USAGE: ./conv.sh 
# 
#   DESCRIPTION: 
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: 目前不支援傳入引數中含有空格;
#         NOTES: ---
#        AUTHOR: linkscue (scue), 
[email protected]
# CREATED: 2013年03月06日 22時52分31秒 HKT # COPYRIGHT: Copyright (c) 2013, linkscue # REVISION: 0.1 # ORGANIZATION: --- #=============================================================================== __ScriptVersion="0.1" #=== FUNCTION ================================================================ # NAME: usage # DESCRIPTION: Display usage information. #=============================================================================== function usage () { cat <<- EOT Usage : $0 -s suffix1 -s suffix2 -d dir1 -d dir2 -f file1 -f file2 Options: -h|help Display this message -v|version Display script version -s suffix Setting suffix -d directory Convert all file encoding to UTF-8 -f file Convert a file encoding to UTF-8 EOT } # ---------- end of function usage ---------- #----------------------------------------------------------------------- # Handle command line arguments #----------------------------------------------------------------------- suffixs=() directorys=() files=() while getopts ":hvd:f:s:" opt do case $opt in h|help ) usage; exit 0 ;; v|version ) echo "$0 -- Version $__ScriptVersion"; exit 0 ;; f ) files+=("$OPTARG") ;; d ) directorys+=("$OPTARG") ;; s ) suffixs+=("$OPTARG") ;; \? ) echo -e "\n Option does not exist : $OPTARG\n" usage; exit 1 ;; esac # --- end of case --- done shift $(($OPTIND-1)) # 檢查輸入 if [[ ${#files} -lt 1 ]] && [[ ${#directorys} -lt 1 ]]; then usage exit fi TMPFILE="$(mktemp -t convXXXXXX)" trap "rm -f '$TMPFILE'" 0 # EXIT trap "rm -f '$TMPFILE'; exit 1" 2 # INT trap "rm -f '$TMPFILE'; exit 1" 1 15 # HUP TERM #------------------------------------------------------------------------------- # 轉換編碼函式 #------------------------------------------------------------------------------- conv_utf8(){ file="$1" echo "處理檔案: '$file' ..." iconv -f gb2312 -t UTF-8 "$file" -o $TMPFILE 2> /dev/null &&\ mv -f $TMPFILE "$f" || { echo "轉換失敗: '${file}'" } } # 轉換檔案 for f in "${files[@]}"; do conv_utf8 "$f" done # 轉換目錄檔案 if [[ ${#directorys} -gt 1 ]]; then if [[ ${#suffixs} -lt 1 ]]; then echo echo "請指定需轉換編碼的檔案字尾,如 '-s txt -s java'" echo usage exit else for s in "${suffixs[@]}"; do for f in $(find $directorys -type f -name "*.${s#.}"); do conv_utf8 "$f" done done fi fi

假如把這個指令碼內容儲存至~/bin/conv,並給予許可權;

使用舉例:

  1. conv -f file1 -f file2 -s java -s xml -d dir1 -d dir2

  2. conv -s java -d .

  3. conv -s java -s xml -d android_helloworld

  4. conv -f file1 -f file2

有了這個轉換編碼,把Windows下的工程引入到Linux上開發就輕鬆得多了,不再有什麼字元編碼讀不出來的問題;


相關推薦

linux批量轉換整個目錄檔案編碼UTF-8

#!/bin/bash - #=============================================================================== # # FILE: conv.sh # # U

利用nodepad++中的python script外掛批量轉換檔案編碼utf-8

兩個部落格寫的都很好。 但是沒有講到最重要的怎麼執行這個python指令碼 這裡直接使用了上述文章的文字描述 選擇Plugins->Plugin Manager->Show Plugin Manager 安裝 Python Script。

Visual Studio 2017 修改 檔案 編碼 UTF-8

VS 2017隱藏了高階儲存功能,導致沒辦法直接去設定程式碼編碼 UTF-8 那麼我們直接把高階儲存功能調用出來即可: 單擊“工具”|“自定義”命令,彈出“自定義”對話方塊。 單擊“命令”標籤,進入“命令”選項卡。 在“選單欄”下拉列表中,選擇“檔案”選項。 單擊“新增命令”按鈕,

html 引用檔案編碼utf-8 的 js檔案亂碼問題

html 已經宣告 <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 引用檔案編碼為utf-8 的 js檔案(用editplus開啟,此檔案顯示為utf-8

Linux命令-cp 把整個目錄檔案複製到另一個目錄

在linux伺服器上想把一個檔案的檔案全部複製到另一個資料夾時,同時該資料夾下的檔案較多無法進行單個檔案的移動時,就要用cp命令         cp命令格式                                  cp  -r 源目錄/* 指定目錄      

利用wget批量下載http目錄檔案

因為網路特殊,連不上網際網路,只好自己製作一個puppet本地源。因為自己的電腦是是可以連網際網路的,所以就直接將puppetlabs.repo匯入進來了 rpm -Uvh http://yum.puppetlabs.com/el/6/products/i386/puppe

Linux漢字編碼方式UTF-8,Windows下面是GB2312

Linux和Windows下面的漢字編碼不一樣,Linux下面是UTF-8,Windows下面是GB2312,正是由於編碼格式不相同從而導致亂碼。 幾種解決方法如下: 1、在Windows上用記事本開啟,選擇檔案另存為編碼方式改為UTF-8。 2、在Linux上用v

CentOS修改mysql資料庫編碼UTF-8(附mysql開啟遠端連線和開放3306埠)

樓主在配置好linux雲伺服器的jdk,tomcat,mysql後,當要開始部署專案是,突然意識到一個很嚴重的問題,那就是資料庫的編碼問題,自安裝完成後並未修改資料庫的額編碼。。。。下面就來說說linux下修改mysql的編碼問題吧。。有一個問題網上很多地方都沒說到,詳情請繼續往下看。

Eclipse 修改所有檔案預設編碼UTF-8

摘要 在實際運用中,我們通常需要使用UTF-8的編碼,但是每次新建一個工程都要改編碼,是不是特別麻煩呢。 而且一旦忘記了,改過之後中文亂碼… 1、修改 workspace text file encoding 依次點選windows -> Preferences

VBA 向檔案寫入編碼UTF-8的資料

Sub Test()           '需要引入  ActiveX Data Objects(ADO)元件  '       即 Microsoft ActiveX Data Objects 2.5 Library 或者 Microsoft ActiveX Data O

編碼UTF-8的XML檔案轉為字元流輸出

package com.wxd.test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputS

mfc中如何讀取,儲存編碼utf-8檔案

主要用到兩個Api:MultiByteToWideCharhttp://msdn.microsoft.com/en-us/library/ms776413.aspxWideCharToMultiBytehttp://msdn.microsoft.com/en-us/libra

修改PC記事本新建文本默認編碼UTF-8

word ... position new utf8 ros utf bsp 新建 1. 打開目錄(沒有則自己新建) C:\WINDOWS\SHELLNEW 2. 在該目錄下創建一個文本文檔(txt): 右鍵 -> 新建 -> 文本文檔 3. 命名為: U

如何實現Eclipse默認編碼UTF-8

unicode tex window utf-8 選擇 nic iso odin src 1 Window->Preferences->General->Workspace,右邊Text file encoding選擇Other->UTF-8 2

設置MYSQL數據庫編碼UTF-8

service variable /etc/ ike 註意 safe cli 標簽 reat 1、 編輯MySql的配置文件 MySql的配置文件Windows下一般在系統目錄下或者在MySql的安裝目錄下名字叫my.ini,可以搜索,Linux下一般是/etc/my.

配置Tomcat的server.xml編碼UTF-8時,再次發布項目,編碼自動還原問題?

image launch ref eclipse 重新 再次 oca eclips 技術 當我們在處理中文亂碼或是配置數據源時,我們要修改Tomcat下的server.xml 但是當我們修改完後重啟Tomcat服務器時發現xml文件又被還原了,修改無效果。 為什麽會還原

Jenkins maven 構建亂碼,修改file.encoding系統變量編碼UTF-8

out selenium 可能 odi 沒有 linu 分享 log image 一切都是windows的控制臺默認編碼GBK問題 情景: 使用jenkins構建,console 輸出的中文亂碼。代碼編碼格式是utf-8,因為Jenkins會默認讀取當前系統的編碼格式,導致

eclipse怎麽設置在新建JSP文件的編碼UTF-8

完成 unicode 怎麽 inf 新建 文件 Coding b- ren eclipse中默認的編碼格式為字符編碼是ISO-8859-1,每次新建jsp頁面都需要手動改寫,特別麻煩,怎麽設置在新建JSP文件的編碼為UTF-8? Preference-->找到We

模糊查詢sql語句條件是中文在後臺從數據庫查不到結果,是英文和字母就可以,而且統一編碼UTF-8了!!!

mic bubuko bsp mysq dos variables src strong like 4.在mysql安裝目錄下打開my.ini文件 5.保存,接著打開電腦的服務選項,將MySQL 重啟 6. 重啟後重新進入dos 窗口的MySQL ,輸入show v

設定MYSQL資料庫編碼UTF-8 設定MYSQL資料庫編碼UTF-8

設定MYSQL資料庫編碼為UTF-8   1、  編輯MySql的配置檔案 MySql的配置檔案Windows下一般在系統目錄下或者在MySql的安裝目錄下名字叫my.ini,可以搜尋,Linux下一般是/etc/my.cnf