当前目录下后缀为sh的文件,改为后缀shell。
这里列出两种方法,先看第一种。
方法1:
#!/bin/bash
str=`find ./ -name \*.sh` # 会产生一个列表
file=" $str " # 需要在列表前后加空格,在shell中,列表或数组的括号前后必须是空格
for i in $file
do
mv $i ${i%sh}shell
done
思路很简单,用find找到符合的文件,存如数组。然后使用mv修改文件名。
其中${i%sh}shell是修改后缀后的文件名。%是将字符串变量i中sh以及sh右侧的字符全部删除。
也可以这样写,${i%.*}.shell,删除最后一个“.”以及右侧的所有字符。
还有一种直接替换,${i/.sh/.shell/},不过如果文件名中如果还含有“.sh”会出问题,因为他只替换第一个找到的字串,所以不精确。
因为此题后缀替换前后有特殊性,还可以这样写:${i}ell。
方法2:
#!/bin/bash
str=`find ./ -name "*.sh"` # 会产生一个列表
或
str=`find ./ -name \*.sh` # 会产生一个列表
file=" $str " # 需要在列表前后加空格,在shell中,列表或数组的括号前后必须是空格
for i in $file
do
mv $i $( echo $i | sed ‘s#.sh$#.shell#g‘ )
done
此方法主要是用了sed命令,原理跟${i/sh/shell/}类似,只不过它指明了替换结尾的字串,能精确匹配要求。