Linux shell 提取文件名和目錄名的方法
${}
[root@node01 ~]# file=/dir1/dir2/dir3/my.file.txt [root@node01 ~]# echo ${file#*/} dir1/dir2/dir3/my.file.txt
刪掉第一個 / 及其左邊的字符串
[root@node01 ~]# echo ${file##*/} my.file.txt
刪掉最后一個 / 及其左邊的字符串
[root@node01 ~]# echo ${file#*.} file.txt
刪掉第一個 . 及其左邊的字符串
[root@node01 ~]# echo ${file##*.} txt
刪掉最后一個 . 及其左邊的字符串
[root@node01 ~]# echo ${file%/*} /dir1/dir2/dir3
刪掉最后一個 / 及其右邊的字符串
[root@node01 ~]# echo ${file%%/*} 空值
刪掉第一個 / 及其右邊的字符串
[root@node01 ~]# echo ${file%.*} /dir1/dir2/dir3/my.file
刪掉最后一個 . 及其右邊的字符串
[root@node01 ~]# echo ${file%%.*} /dir1/dir2/dir3/my
刪掉第一個 . 及其右邊的字符串
記憶的方法為:
# 是 去掉左邊(鍵盤上#在 $ 的左邊)
#去掉左邊第一個及左邊的字符串
##去掉最后一個及左邊的字符串
%是去掉右邊(鍵盤上% 在$ 的右邊)
%去掉最后一個及右邊的字符串
去掉第一個及右邊的字符串
單一符號是最小匹配;兩個符號是最大匹配
單一符號是最小匹配;兩個符號是最大匹配
[root@node01 ~]# echo ${file:0:5} /dir1
提取最左邊的 5 個字節(jié)
[root@node01 ~]# echo ${file:5:5} /dir2
提取第 5 個字節(jié)右邊的連續(xù)5個字節(jié)
也可以對變量值里的字符串作替換:
[root@node01 ~]# echo ${file/dir/path} /path1/dir2/dir3/my.file.txt
將第一個dir 替換為path
[root@node01 ~]# echo ${file//dir/path} /path1/path2/path3/my.file.txt
將全部dir 替換為 path
總結(jié)
以上所述是小編給大家介紹的Linux shell 提取文件名和目錄名的方法,希望對大家有所幫助!
相關(guān)文章
linux 中的ls命令參數(shù)詳解及l(fā)s命令的使用實例
這篇文章主要介紹了linux 中的ls命令參數(shù)詳解及l(fā)s命令的使用實例,需要的朋友可以參考下2017-08-08如何短時間內(nèi)學(xué)好一門語言 shell腳本語言為例
這篇文章主要以shell腳本語言為例,為大家介紹了如何短時間內(nèi)學(xué)好一門語言,感興趣的小伙伴們可以參考一下2016-09-09Shell腳本把文件從GBK轉(zhuǎn)為UTF-8編碼
這篇文章主要介紹了Shell腳本把文件從GBK轉(zhuǎn)為UTF-8編碼,需要的朋友可以參考下2014-06-06