我有一个变量,它有目录路径和文件名。我想从Unix目录路径中单独提取文件名并将其存储在变量中。
fspec="/exp/home1/abc.txt"
答案 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