Shell
路徑名中的文件名,不包括(未知)副檔名
有了路徑名,就可以提取它的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
- 修飾符( “
:t
tail”)提取最後一個路徑名組件$pathname
(它的工作方式類似於basename
)。- 修飾符(我想是
:r
“root”)將文件名的位提取到副檔名,如果有的話。副檔名是文件名中最後一個點之後出現的部分。這意味著對於像.zshrc
.另一個相關的修飾符是
:h
(“head”),其工作方式類似於dirname
和:e
(“副檔名”),僅提取副檔名。