In development, we often need to change the N-file encoding, ICONV can only make changes to a single file, how to do? Let's write a shell script to solve this problem.
Example one: Using shell script to implement bulk transcoding operation.
#!/bin/sh # convertcodefilepath=$1 fromcode=$2 tocode=$3 for i ' {1..1} do [-f $convertCodeFilePath] if [ $?
-eq 0] Then iconv-f $fromCode-T $toCode-C-O $convertCodeFilePath $convertCodeFilePath if [$-ne 0]
Then echo $convertCodeFilePath "=>" Convert code failed.
else echo $convertCodeFilePath "=>" Convert code success.
Fi break;
fi [D $convertCodeFilePath] if [$?-ne 0] then break; fi dir= ' ls $convertCodeFilePath | Sort-d ' for fileName in $dir do filefullpatch= $convertCodeFilePath/$fileName filetype= ' echo $file
Name |awk-f. ' {print $} ' [-D $fileName] if [$-eq 0] then continue fi If [$fileType!= ' sh '] && [$fileType!= ' py '] && [$fileType!= ' xml '] && [$fileType!= ' Pro Perties '] && [$fileType!= ' Q '] && [$fileType!= ' hql '] &&amP [$fileType!= ' txt '] then continue fi iconv-f $fromCode-T $toCode-C-O $fileFullPatch $fi
Lefullpatch if [$-ne 0] then echo $fileName "=>" Convert code failed.
Continue else echo $fileName "=>" Convert code success.
Fi done.
How to use:
SH convertcode.sh/home/sam/data gbk Utf-8
Example two: Concise version
Usage examples:
CD ~/workspace/xxxproject
~/iconv_shell.sh./*java
Okay, go straight to the code ~ ~
#!/bin/bash
If ["$#"!= "2"]; then
echo "Usage: ' basename $ ' dir filter"
exit
fi
dir=$1
filte R=$2
echo "for
file" $dir-name "$"; do
echo "$file"
iconv-f gbk-t utf8-o $file $file
done
There are some changes here, such as source and target encoding should be as parameters, I do not have the need for the time being, lazy to write.