编写脚本(Shell)时,经常会遭遇包括全路径的文件名里提取路径名、文件名等。
在这里包括全路径的文件名为
/usr/local/apach2/etc/httpd.conf
定义为
FILE=”/usr/local/apach2/etc/httpd.conf”
(1)提取文件名
FILENAME=${FILE##*/}
##*/ 表示删除从最前面开始至最后一个/出现的部分,因此FILENAME为httpd.conf。
(2)提取文件扩展名
EXT=${FILE##*.}
和(1)一样,删除从最前面开始至最后一个.部分,EXT为conf。
(3)提取httpd
WITHOUTEXT=${FILE%.*}
%.* 删除从最后开始至第1次出现.的部分,WITHOUT为/usr/local/apach2/etc/httpd。
(4)提取目录名
DIRNAME=${FILE%/*}
%/* 删除从最后开始至第1次出现/的部分,DIRNAME为/usr/local/apach2/etc。
##和%%表示最长一致,而#和%表示最短一致。#表示从前面,%表示从后面。
以下为脚本样本
代码如下
#!/bin/bash
FILE="/usr/local/apach2/etc/httpd.conf"
FILENAME=${FILE##*/}
EXT=${FILE##*.}
WITHOUTEXT=${FILE%.*}
DIRNAME=${FILE%/*}
echo $FILENAME
echo $EXT
echo $WITHOUTEXT
echo $DIRNAME
执行结果为
httpd.conf
conf
/usr/local/apach2/etc/httpd
/usr/local/apach2/etc