linux中shell脚本提取路径中提取目录名、文件名及扩展名

作者:简简单单 2016-06-20

编写脚本(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

相关文章

精彩推荐