(不明)拡張子を除くパス名のファイル名

(不明)拡張子を除くパス名のファイル名

一つあるパス名抽出できるファイル名、除外先験的に既知の拡張子基本名:

$ pathname="/home/paulo/paulo.pdf"
$ printf "%s\n" "$(basename $pathname .pdf)"
paulo

しかし、拡張子がわからない場合はどうすればよいですか?

ベストアンサー1

zshシェルから:

$ pathname=/home/paulo/paulo.pdf
$ printf '%s\n' $pathname:t:r
paulo
  • 修飾子:t( "tail")は最後のパス名コンポーネントを抽出します$pathname(同様に機能しますbasename)。
  • 修飾子:r(私の推測では「ルート」)は、ファイル名のビットを拡張子(存在する場合)まで抽出します。拡張子はファイル名の最後のドットの後の部分です。これは、次のことが得られることを意味します.zshrc

その他の関連修飾子は次のとおりです。

  • :h(「head」)はdirname
  • :e(「拡張子」)、拡張子のみを抽出します。

おすすめ記事