批处理重命名特殊文件名-shell

来源:互联网 发布:python classmethod 编辑:程序博客网 时间:2024/05/21 15:50

批处理重命名特殊文件名

原题如下

这里写图片描述

该题目简化为如下

有文本4.txt如下:

一b!a!1235@_ s%#8i 三 c.rar
h^e12 0~%l%!p!@. s321-的文件.txt
%o%%% !O!ffi9~ ce$- Wor8d29 文档.docx

将这三行中的数字、汉字、特殊字符全部(含空格)去掉,而重命名为只含字母的文件,但后缀名不能更改,重命名后:

basic.rar
helps.txt
oOfficeWor.docx

编写代码

#! /bin/bashfile=4.txtwhile read linedo        newStr=${line}        #获取字符串长度        len=${#newStr}        i=0        # 保留输出字符串        str=        while [ ${i} -lt ${len} ]         do                newStr=${line}                # 截取第i个字符                c=${newStr:${i}:1}                # 判断第i个字符是否为:字母和文件后缀点                case ${c} in                [a-zA-Z])                        str=${str}${c}                ;;                .)                        str=${str}${c}                ;;                esac                let i++        done        # 从左边开始删除最后(最右边)一个 . 号及左边的所有字符        right=${str##*.}        # 表示从右边开始,删除第一个 . 号及右边的字符        left=${str%.*}        # //替换所有字符   /替换第一个出现的字符        newleft=${left//./}        echo ${newleft}"."${right}done < ${file}

运行结果

这里写图片描述

参考文档

shell 判断字符串是否为数字:http://blog.csdn.net/beckdon/article/details/16858201

Shell 变量的截取:http://www.runoob.com/linux/linux-shell-variable.html

case语句的使用:http://www.runoob.com/linux/linux-shell-process-control.html

原创粉丝点击