ファイル名とともにディレクトリパスを持つ変数があります。 Unixディレクトリパスからファイル名のみを抽出し、変数に保存したい。
fspec="/exp/home1/abc.txt"
basename コマンドを使用して、パスからファイル名を抽出します。
[/tmp]$ export fspec=/exp/home1/abc.txt
[/tmp]$ fname=`basename $fspec`
[/tmp]$ echo $fname
abc.txt
ファイル名を取得する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
sed
$ echo $fspec | sed 's/.*\///'
abc.txt
iFSを使用する
$ IFS="/"
$ set -- $fspec
$ eval echo \${${#@}}
abc.txt
base = $(ベース名$ fspec)
dirname "/usr/home/theconjuring/music/song.mp3"
は/usr/home/theconjuring/music
を生成します。
バッシュ:
fspec="/exp/home1/abc.txt"
fname="${fspec##*/}"
echo $fspec | tr "/" "\n"|tail -1
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