在上篇文章 “更改文件名“中,一CU网友给出了一个答案
ls *.flac|while read file
do
echo mv "${file}" "${file#*-}";
done
很好奇${file#*-}字符串中#*-的作用,于是在网上看到一些内容是说明这些东西的:
来自 http://www.boobooke.com/bbs/thread-148390-1-1.html,内容如下:
关于# %的用法问题!今天就在这里说下吧!有些用到的也不是很多!自己之前在写一个脚本的时候用到过!
主要是就是#和%和:的一些特殊用法:
# 用在变量名前面可以达到统计字符个数的功能
tom@sexly:~$ a=”www.google.com”
tom@sexly:~$ echo ${#a}
14# 用在变量之后的时候可以达到截取字符的功能(只匹配一次)
tom@sexly:~$ a=”www.google.com”
tom@sexly:~$ echo ${a#*.} 这里截取.(第一个点)后面的所有内容
google.com## 和单个#功能基本相同,但是他会匹配到最后
tom@sexly:~$ a=”www.google.com”
tom@sexly:~$ echo ${a##*.} 这里截取了最后一个点的内容
com% 和%% 他们功能与#和##基本相同 最不过他们是截取的内容是相反的
tom@sexly:~$ a=”www.google.com”
tom@sexly:~$ echo ${a%.*}
http://www.google
tom@sexly:~$ a=”www.google.com”
tom@sexly:~$ echo ${a%%.*}
www:(冒号) 其功能也是截取字符串
格式为 :起始[:长度] 省略长度,系统默认截取到最后,起始从0开始
tom@sexly:~$ echo ${a:4}
google.com
tom@sexly:~$ echo ${a:4:6}
从上面可以看到,CU网友出给的答案${file#*-}的作用是截取 – 后面的内容.