web-dev-qa-db-fra.com

Extraire le chemin du répertoire et le nom du fichier

J'ai une variable qui a le chemin du répertoire, avec le nom du fichier. Je veux extraire le nom de fichier seul du chemin du répertoire Unix et le stocker dans une variable.

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

Utilisez la commande basename pour extraire le nom du fichier du chemin:

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

bash pour obtenir le nom du fichier

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

d'autres moyens 

awk

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

sed

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

en utilisant IFS

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

base = $ (nom de base $ fspec)

3
William Pursell

dirname "/usr/home/theconjuring/music/song.mp3" donnera /usr/home/theconjuring/music.

2
Berk Özbalcı

frapper:

fspec="/exp/home1/abc.txt"
fname="${fspec##*/}"
2
echo $fspec | tr "/" "\n"|tail -1
1
ghostdog74

Utiliser bash "here string":

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

tr "/" "\ n" <<< $ fspec | queue -1

nom de fichier = `tr"/""\n "<<< $ fspec | queue -1`

0
NetHead