#不懂rename和enca的请看前两篇随笔
文件批量重命名
ubuntu 查看文件编码并进行批量编码修改
1 #!/bin/bash
2 #将文件编码更改为UTF-8
3 #用法
4 #1. 将文件命名为set_encoding.sh
5 #2. chmod +x set_encoding.sh
6 #3. ./set_encoding.sh
7 #4. 输入目录名称
8 #5. 输入是否递归更改
9 #$1表示是否要递归修改文件编码
10 function change_file_encoing(){
11 for file in $(ls -h | rename 's/ //' *)
12 do
13 echo "$file" #此命令主要是检测是否进入程序并执行;
14 done;
15 for file in $(ls -h )
16 do
17 echo "$file"
18 if [[ -d "$file" && $1 = y ]];then
19 cd "$file"
20 echo "$file"
21 change_file_encoing $1
22 cd ..
23 elif [[ -f "$file" ]];then
24 echo "$file"
25 enca -L zh_CN -x UTF-8 "$file"
26 fi;
27 done;
28 #ecna -L zh_CN "file" UTF-8
29 }
30
31 read -p "please enter the dir path:" path #读取目录路径
32 if [ ! -x "$path" ]; #判断目录是否存在且是否具有执行权限
33 then
34 echo "dir path not exists"
35 else
36 read -p "please enter if you want to recursive?y/n:" recur #是否递归
37 fi
38 if [ $recur = "y" ];
39 then
40 cd "$path"
41 change_file_encoing "y" #递归修改文件编码
42 else
43 cd "$path"
44 change_file_encoing "n" #非递归修改
45 fi