web-dev-qa-db-ja.com

ディレクトリパスとファイル名を抽出する

ファイル名とともにディレクトリパスを持つ変数があります。 Unixディレクトリパスからファイル名のみを抽出し、変数に保存したい。

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

basename コマンドを使用して、パスからファイル名を抽出します。

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

ファイル名を取得する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
22
ghostdog74

base = $(ベース名$ fspec)

5
William Pursell

dirname "/usr/home/theconjuring/music/song.mp3"/usr/home/theconjuring/musicを生成します。

2
Berk Özbalcı

バッシュ:

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

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
0
NetHead