シェルを書いているときに、最後のディレクトリ名が欲しいことがあったのでメモ。
「/home/hoge/piyo」というパス名があったとすると、最後の「piyo」だけを抽出したい。
hoge.sh
# !/bin/bash
DIR="/home/hoge/piyo"
str=`echo ${DIR} | awk -F "/" '{ print $NF }'`
echo ${str}
結果
$ ./hoge.sh
piyo
-
awk -F "/"のところの"/"を変えれば、他の区切り文字などにも対応できる。 -
print $(NF - 1)とすると最後から二番目の区切り位置の文字が抽出できる。(例だとhogeが抽出される) -
print $1で最初の区切り位置の文字が抽出できる。例だと最初の区切りには何もないので何も表示されない($1「""」、$2「"home"」、$3「"hoge"」、$4「"piyo"」)
追記:
もっと簡単な方法を教えて下さいました。
str=`basename ${DIR}`