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"
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
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
base = $ (nom de base $ fspec)
dirname "/usr/home/theconjuring/music/song.mp3"
donnera /usr/home/theconjuring/music
.
frapper:
fspec="/exp/home1/abc.txt"
fname="${fspec##*/}"
echo $fspec | tr "/" "\n"|tail -1
Utiliser bash "here string":
fspec = "/ exp/home1/abc.txt"
tr "/" "\ n" <<< $ fspec | queue -1
nom de fichier = `tr"/""\n "<<< $ fspec | queue -1`