提取目录路径和文件名

时间:2010-03-29 06:03:40

标签: shell unix

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

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

7 个答案:

答案 0 :(得分:68)

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

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

答案 1 :(得分:19)

bash获取文件名

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

其他方式

AWK

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

SED

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

使用IFS

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

答案 2 :(得分:3)

base = $(basename $ fspec)

答案 3 :(得分:2)

击:

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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

echo $fspec | tr "/" "\n"|tail -1

答案 6 :(得分:0)

使用bash" here string":

$ fspec="/exp/home1/abc.txt" 
$ tr  "/"  "\n"  <<< $fspec | tail -1
abc.txt
$ filename=$(tr  "/"  "\n"  <<< $fspec | tail -1)
$ echo $filename
abc.txt