最近在进行批量文件重命名的时候,发现了shell里面内置的有用功能。如下:
5.2 字符串的替换
${变量名/old/new} 替换第一个匹配值
${变量名//old/new} 替换所有匹配值
]$ phone=18573197315
]$echo ${phone/3/4}#只是显示,原变量phone的值没有改变
18574197315
]$ phone=${phone/3/4} #修改原变量值
用途举例: 修改文件名
5.3 字符串匹配删除
从左到右 最短匹配删除 ${变量名#匹配信息}
最长匹配删除 ${变量名##匹配信息}
]$ A=`head -1 /etc/passwd`
]$ echo $A
root:x:0:0:root:/root:/bin/bash
]$ echo ${A#root}
:x:0:0:root:/root:/bin/bash
]$ echo ${A#*:}
x:0:0:root:/root:/bin/bash
]$ echo ${A##*:} #最长匹配删除
/bin/bash
从右到左 最短匹配删除 ${变量名%匹配信息}
最长匹配删除 ${变量名%%匹配信息}
]$ echo ${A%:*}
root:x:0:0:root:/root
]$ echo ${A%%:*}
root
用途举例:批量修改文件扩展名 ( ${i%.*} 提取不带 扩展名的文件名)
将所有的.doc文件改为.txt文件
for i in ·ls *.doc
do
mv $i ${i%.*}.txt
done