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

パラメータ展開

%:後方最短一致した部分を取り除く

##:前方最長一致した部分を取り除く

参考:

パス文字列からディレクトリ部、ファイル名を取得する | ザワプロ!

パス文字列からファイル名などを抜き出す – Qiita

ファイルパスからファイル名や拡張子を自由に取り出す | ザリガニが見ていた…。

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

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です