linux字符串匹配
字符串的掐头去尾
%x=aabbaarealwwvvww
%echo "${x%w*w}"
aabbaarealwwvv
%echo "${x%%w*w}"
aabbaareal
%echo "${x##a*a}"
lwwvvww
%echo "${x#a*a}"
bbaarealwwvvww
%x=aabbaarealwwvvww
%echo "${x%w*w}"
aabbaarealwwvv
%echo "${x%%w*w}"
aabbaareal
%echo "${x##a*a}"
lwwvvww
%echo "${x#a*a}"
bbaarealwwvvww
其中 , # 表示掐头, 因为键盘上 # 在 $ 的左面。
其中 , % 表示掐尾, 因为键盘上 % 在 $ 的右面。
单个操作符的表示最小匹配,双个操作符表示最大匹配。
也就是说,当匹配的有多种方案的时候,选择匹配的最大长度还是最小长度。
举例:
将一目录下所有的文件的扩展名改为.c:
for i in *;do sudo mv $i ${i}.c;done
如何将.c文件的.c去掉;
for i in *; do sudo mv $i ${i%%.c};done