bash文件操作之批量修改文件格式与重命名——二合一完美版
#不懂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