file -i 文件
就會輸出linux識別出來的文件編碼
一、運用iconv命令執(zhí)行編碼轉(zhuǎn)換文件內(nèi)容編碼轉(zhuǎn)換
iconv -f 現(xiàn)在的編碼 -t 要轉(zhuǎn)換的編碼 文件
執(zhí)行之后只是輸出經(jīng)過轉(zhuǎn)換的文本而已,要保存的話
iconv -f 現(xiàn)在的編碼 -t 要轉(zhuǎn)換的編碼 文件 -o 目標(biāo)文件
或者
iconv -f 現(xiàn)在的編碼 -t 要轉(zhuǎn)換的編碼 文件 > 目標(biāo)文件
二、更好的傻瓜型命令行工具enca,它不但能智能的識別文件的編碼,并且還支持成批轉(zhuǎn)換。
enca -x utf-8 *
以上命令是轉(zhuǎn)換當(dāng)前目錄下的所有文件的編碼為utf-8
也可以針對單個文件,另外還有一個參數(shù)是指定當(dāng)前語言
enca -L zh_CN -x utf-8 文件
三、文件名編碼轉(zhuǎn)換
由于如今用linux,原來在windows里的文件都是用GBK編碼的。所以copy到linux下是亂碼,文件內(nèi)容能夠用iconv來轉(zhuǎn) 換可是好多中文的文件名仍舊亂碼,找到個能夠轉(zhuǎn)換文件名編碼的命令,就是convmv。
convmv命令細(xì)致參數(shù)
比如
convmv -f GBK -t UTF-8 *.mp3
不過這個命令不會直正的轉(zhuǎn)換,你能夠看到轉(zhuǎn)換前后的比擬。假設(shè)要直正的轉(zhuǎn)換要加上參數(shù) –notest
convmv -f GBK -t UTF-8 –notest *.mp3
-f 參數(shù)是指出轉(zhuǎn)換前的編碼,-t 是轉(zhuǎn)換后的編碼。這個千萬不要弄錯了。不然能夠仍舊亂碼哦。尚有一個參數(shù)很有用。就是 -r 這個表示遞歸轉(zhuǎn)換現(xiàn)在目錄下的一切子目錄。
四、目錄下所有文件遞歸轉(zhuǎn)換
find default -type d -exec mkdir -p utf/{} \;
find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \;
末尾有分號
這兩行命令將default目錄下的文件由GBK編碼轉(zhuǎn)換為UTF-8編碼,目錄結(jié)構(gòu)不變,轉(zhuǎn)碼后的文件保存在utf/default目錄下。
對上面的命令進(jìn)行解釋:
-exec command: 執(zhí)行命令, 具體介紹見后文. -ok command: 和-exec一樣, 除了命令執(zhí)行需要用戶許可. -print: 打印文件名 -ls: 列出文件詳細(xì)信息
簡單地說, -exec或-ok, 將查詢到的文件作為參數(shù)傳遞給后面的命令執(zhí)行, 而參數(shù)的位置用{}標(biāo)識, 即命令中, “{}”替換成find查找出來的文件名, 最后”\;”表示結(jié)束符.
作者:紅山玉龍
聯(lián)系客服