4-1-提取文件名(去除后缀)

11 Dec 2018

TXT=s.txt
f1=`echo ${TXT%.*}`
f=`echo ${f1##*/}`

解释:

${var##*/}

该命令的作用是去掉变量var从左边算起的最后一个’/’字符及其左边的内容,返回从左边算起的最后一个’/’(不含该字符)的右边的内容。使用例子及结果如下:

~$ var=/dir1/dir2/file.txt
~$ echo ${var##*/}
file.txt

${var%.*}

该命令的使用是去掉变量var从右边算起的第一个’.’字符及其右边的内容,返回从右边算起的最后一个’.’(不含该字符)的左边的内容。使用例子及结果如下:

~$ var=/dir1/dir2/file.txt
~$ echo ${var%.*}
/dir1/dir2/file

总结:
其实${}并不是专门为提取文件名或目录名的,它的使用是变量的提取和替换等等操作,它可以提取非常多的内容,并不一定是上面五个例子中的’/’或’.’。也就是说,上面的使用方法只是它使用的一个特例。

看到上面的这些命令,可能会让人感到非常难以理解和记忆,其实不然,它们都是有规律的。