关于shell:提取目录路径和文件名

Extract directory path and filename

我有一个变量,它有目录路径和文件名。我想从unix目录路径中单独提取文件名,并将其存储在一个变量中。

1
fspec="/exp/home1/abc.txt"


使用basename命令从路径中提取文件名:

1
2
3
4
[/tmp]$ export fspec=/exp/home1/abc.txt
[/tmp]$ fname=`basename $fspec`
[/tmp]$ echo $fname
abc.txt

bash获取文件名

1
2
3
fspec="/exp/home1/abc.txt"
filename="${fspec##*/}"  # get filename
dirname="${fspec%/*}" # get directory/path name

其他方式

AWK

1
2
$ echo $fspec | awk -F"/" '{print $NF}'
abc.txt

塞德

1
2
$ echo $fspec | sed 's/.*\///'
abc.txt

使用IFS

1
2
3
4
$ IFS="/"
$ set -- $fspec
$ eval echo \${${#@}}
abc.txt


基=$(basename$fspec)


dirname"/usr/home/theconjuring/music/song.mp3"将屈服/usr/home/theconjuring/music


猛击:

1
2
fspec="/exp/home1/abc.txt"
fname="${fspec##*/}"

1
2
echo $fspec | tr"/""
"|tail -1


使用bash"here string":

fspec="/exp/home1/abc.txt"

tr"/"""<<<$fspec tail-1

文件名=`tr"/""<<<$fspec tail-1`