歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

bash shell 遍歷指定目錄下文件 iconv 編碼轉換

前言
最近一直在寫php和c代碼,好久沒動bash腳本,一些命令有些生疏了,今天有個需求要對指定目錄下的文件進行字符編碼轉換,寫了個腳本實現了一下

目錄結構
/home/wzy/Downloads/execl/

                        |__科學/{1.csv,2.csv,3.csv,4.csv}

                        |__教育/{1.csv,2.csv,3.csv,4.csv}

                        |__生活/{1.csv,2.csv,3.csv,4.csv}

                        |__體育/{1.csv,2.csv,3.csv,4.csv}

需求
遍歷指定根目錄下的所有文件,進行文件編碼的轉換

技巧
1.bash shell中for循環的使用
2.iconv字符編碼轉換工具的使用

腳本代碼

#!/bin/bash

#1.變量定義
directory="/home/wzy/Downloads/execl"
f_encoding="utf-8"
t_encoding="gbk"

#2.遍歷子目錄
for dir in `ls $directory`
do
 if [ -d $directory/$dir ]
 then
  #3.遍歷子目錄的文件
  for file in `ls $directory/$dir`
  do
   if [ -e $directory/$dir/$file ]
   then
    #4.文件類型轉換
    iconv -f $f_encoding -t $t_encoding $directory/$dir/$file -o $directory/$dir/iconv.$file
    #5.刪除原始文件
    if [ $? -eq 0 ]
    then
     rm $directory/$dir/$file
    fi
   fi
  done
 fi
done

iconv命令
語法
iconv  -f [encoding]  -t [encoding] [inputfile] -o [outputfile] 
選項
-f : 原文件編碼
-t : 需要轉換的編碼
-o : 指定輸出文件

後記
記錄這個腳本主要是吃飯前對腳本中絕對路徑的使用錯誤一直沒有發現,團隊喝酒歸來後反而頭腦清醒,搞定了,希望對各位看我博客的同學也有所幫助,歡迎交流,一般有留言我都會回復的,共同學習,共同進步!

Copyright © Linux教程網 All Rights Reserved