Извлечь путь к каталогу и имя файла - PullRequest
31 голосов
/ 29 марта 2010

У меня есть переменная, которая имеет путь к каталогу вместе с именем файла. Я хочу извлечь имя файла только из пути к каталогу Unix и сохранить его в переменной.

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

Ответы [ 7 ]

69 голосов
/ 29 марта 2010

Используйте команду basename , чтобы извлечь имя файла из пути:

[/tmp]$ export fspec=/exp/home1/abc.txt 
[/tmp]$ fname=`basename $fspec`
[/tmp]$ echo $fname
abc.txt
19 голосов
/ 29 марта 2010

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

1009 * СЭД *

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

с использованием IFS

$ IFS="/"
$ set -- $fspec
$ eval echo \${${#@}}
abc.txt
4 голосов
/ 29 марта 2010

base = $ (basename $ fspec)

2 голосов
/ 18 августа 2013

dirname "/usr/home/theconjuring/music/song.mp3" даст /usr/home/theconjuring/music.

2 голосов
/ 29 марта 2010

Баш:

fspec="/exp/home1/abc.txt"
fname="${fspec##*/}"
1 голос
/ 29 марта 2010
echo $fspec | tr "/" "\n"|tail -1
0 голосов
/ 10 июня 2014

Использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...