Shell

路徑名中的文件名,不包括(未知)副檔名

  • February 10, 2020

有了路徑名,就可以提取它的filename,不包括它的先驗已知副檔名,basename

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

但是,如果不知道副檔名怎麼辦?

zsh外殼中:

$ pathname=/home/paulo/paulo.pdf
$ printf '%s\n' $pathname:t:r
paulo
  • 修飾符( “ :ttail”)提取最後一個路徑名組件$pathname(它的工作方式類似於basename)。
  • 修飾符(我想是:r“root”)將文件名的位提取到副檔名,如果有的話。副檔名是文件名中最後一個點之後出現的部分。這意味著對於像.zshrc.

另一個相關的修飾符是

  • :h(“head”),其工作方式類似於dirname
  • :e(“副檔名”),僅提取副檔名。

引用自:https://unix.stackexchange.com/questions/566762