使い方

パスからファイル名を取得するには、basename コマンドを使う。

$ basename "/foo/bar/baz.ext"
baz.ext

パスからディレクトリを取得するには、dirname コマンドを使う。

$ dirname "/foo/bar/baz.ext"
/foo/bar

参考:

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

basename コマンド

パスからファイル名を取得する。

$ basename "/foo/bar/baz.ext"
baz.ext

参考:

basename – フルパスからファイル名を取り出す | Webkaru

ファイル名などを抽出する basename コマンドの使い方まとめ | エンジニアの入り口

ファイル名からディレクトリや拡張子を取り除くには | @IT

basename コマンド – パス名からファイル名を取得する | @IT

basename – ファイル名からディレクトリや末尾の文字列を削除したものを返す | 日経クロステック

Extract file basename without path and extension in bash – Stack Overflow

dirname コマンド

パスからディレクトリを取得する。

$ dirname "/foo/bar/baz.ext"
/foo/bar

参考:

dirname コマンド – パス名からディレクトリ部分を取得する | @IT

Quoting within $(command substitution) in Bash – Unix & Linux Stack Exchange

パラメータ展開でパスを加工する

${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

dirname、basename は「%/*」と「##*/」で書くと処理速度が早くなる – Qiita

Bash の変数展開によるファイル名や拡張子の取得 – Qiita

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

Bash でファイル名から拡張子とファイル名を分割して別のファイル名を生成するメモ | cloudpack.media

スペースを含むパス

参考:

空白を含むパスを変数にして cd する | clmemo@aka

Whitespace safety in shell scripts | Yakking

How to cd to a directory with a name containing spaces in bash? – Ask Different

How to store a path with white spaces into a variable in bash – Stack Overflow

dirname / basename problems with spaces – Stack Overflow

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA