Shell 提取目录路径和文件名
我有一个变量,它有目录路径和文件名。我想从Unix目录路径中单独提取文件名,并将其存储在变量中Shell 提取目录路径和文件名,shell,unix,Shell,Unix,我有一个变量,它有目录路径和文件名。我想从Unix目录路径中单独提取文件名,并将其存储在变量中 fspec="/exp/home1/abc.txt" 使用命令从路径中提取文件名: [/tmp]$ export fspec=/exp/home1/abc.txt [/tmp]$ fname=`basename $fspec` [/tmp]$ echo $fname abc.txt 您可以简单地执行以下操作: base=$(basename "$fspec") 狂欢节: bash获取文件名
fspec="/exp/home1/abc.txt"
使用命令从路径中提取文件名:
[/tmp]$ export fspec=/exp/home1/abc.txt
[/tmp]$ fname=`basename $fspec`
[/tmp]$ echo $fname
abc.txt
您可以简单地执行以下操作:
base=$(basename "$fspec")
狂欢节:
bash获取文件名
fspec="/exp/home1/abc.txt"
filename="${fspec##*/}" # get filename
dirname="${fspec%/*}" # get directory/path name
其他方式
awk
塞德
使用IFS
$ IFS="/"
$ set -- $fspec
$ eval echo \${${#@}}
abc.txt
dirname”/usr/home/theconjuring/music/song.mp3“
将屈服
/usr/home/theconjuring/music
使用bash“herestring”:
与之相反:
$ echo $fspec | tr
如果您也需要路径,请使用dirname:
fpath=$(dirname$fspec)
$ echo $fspec | sed 's/.*\///'
abc.txt
$ IFS="/"
$ set -- $fspec
$ eval echo \${${#@}}
abc.txt
echo $fspec | tr "/" "\n"|tail -1
$ fspec="/exp/home1/abc.txt"
$ tr "/" "\n" <<< $fspec | tail -1
abc.txt
$ filename=$(tr "/" "\n" <<< $fspec | tail -1)
$ echo $filename
abc.txt
$ tr <<< $fspec
$ echo $fspec | tr