basename / dirname
basename コマンド
パスからファイル名を取得する。
$ basename "/foo/bar/baz.ext" baz.ext
dirname コマンド
パスからディレクトリを取得する。
$ dirname "/foo/bar/baz.ext" /foo/bar
パラメータ展開でパスを加工する
${filepath##*/}
:パスからファイル名を取得する。
$ filepath="/foo/bar/baz.ext" $ echo "${filepath##*/}" baz.ext
${filepath%/*}
:パスからディレクトリを取得する。
$ filepath="/foo/bar/baz.ext" $ echo "${filepath%/*}" /foo/bar
${filename%.*}
:拡張子を取り除く。
$ filename="foo.bar.ext" $ echo "${filename%.*}" foo.bar
${filename##*.}
:拡張子を取得する。
$ filename="foo.bar.ext" $ echo "${filename##*.}" ext
パラメータ展開
%
:後方最短一致した部分を取り除く
##
:前方最長一致した部分を取り除く
参考:
パス文字列からディレクトリ部、ファイル名を取得する | ザワプロ!
ファイルパスからファイル名や拡張子を自由に取り出す | ザリガニが見ていた…。
basename フルパスからファイル名を取り出す | Webkaru
Bash でファイル名から拡張子とファイル名を分割して別のファイル名を生成するメモ | cloudpack.media
bash では basename や dirname を使うより ${0##*/} や ${0%/*} を使ったほうが速い? | mattintosh note
bash の変数展開によるファイル名や拡張子の取得 – Qiita
ファイル名からディレクトリや拡張子を取り除くには | @IT
basename ファイル名からディレクトリや末尾の文字列を削除したものを返す | 日経 xTECH クロステック
ファイル名などを抽出する basename コマンドの使い方まとめ | エンジニアの入り口
Extract file basename without path and extension in bash – Stack Overflow
スペースを含むパス
参考:
Whitespace safety in shell scripts | Yakking
How to cd to a directory with a name containing spaces in bash? – Ask Different