提取目录路径和文件名

Ara*_*rav 36 unix shell

我有一个变量,其中包含目录路径以及文件名.我想从Unix目录路径中单独提取文件名并将其存储在变量中.

fspec="/exp/home1/abc.txt"  
Run Code Online (Sandbox Code Playgroud)

cod*_*ict 72

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

[/tmp]$ export fspec=/exp/home1/abc.txt 
[/tmp]$ fname=`basename $fspec`
[/tmp]$ echo $fname
abc.txt
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 22

bash获取文件名

fspec="/exp/home1/abc.txt" 
filename="${fspec##*/}"  # get filename
dirname="${fspec%/*}" # get directory/path name
Run Code Online (Sandbox Code Playgroud)

其他方法

AWK

$ echo $fspec | awk -F"/" '{print $NF}'
abc.txt
Run Code Online (Sandbox Code Playgroud)

SED

$ echo $fspec | sed 's/.*\///'
abc.txt
Run Code Online (Sandbox Code Playgroud)

使用IFS

$ IFS="/"
$ set -- $fspec
$ eval echo \${${#@}}
abc.txt
Run Code Online (Sandbox Code Playgroud)


Wil*_*ell 5

您可以简单地执行以下操作:

base=$(basename "$fspec")
Run Code Online (Sandbox Code Playgroud)

  • 并且,如果您也需要路径,请使用目录名:`fpath=$(dirname $fspec)` (3认同)