${}
[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 個字節
[root@node01 ~]# echo ${file:5:5}/dir2
提取第 5 個字節右邊的連續5個字節
也可以對變量值里的字符串作替換:
[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
總結
以上所述是小編給大家介紹的Linux shell 提取文件名和目錄名的方法,希望對大家有所幫助!
新聞熱點
疑難解答