${}
[root@node01 ~]# file=/dir1/dir2/dir3/my.file.txt
[root@node01 ~]# echo ${file#*/}
dir1/dir2/dir3/my.file.txt
刪掉第一個(gè) / 及其左邊的字符串
[root@node01 ~]# echo ${file##*/}
my.file.txt
刪掉最后一個(gè) / 及其左邊的字符串
[root@node01 ~]# echo ${file#*.}
file.txt
刪掉第一個(gè) . 及其左邊的字符串
[root@node01 ~]# echo ${file##*.}
txt
刪掉最后一個(gè) . 及其左邊的字符串
[root@node01 ~]# echo ${file%/*}
/dir1/dir2/dir3
刪掉最后一個(gè) / 及其右邊的字符串
[root@node01 ~]# echo ${file%%/*} 空值
刪掉第一個(gè) / 及其右邊的字符串
[root@node01 ~]# echo ${file%.*}
/dir1/dir2/dir3/my.file
刪掉最后一個(gè) . 及其右邊的字符串
[root@node01 ~]# echo ${file%%.*}
/dir1/dir2/dir3/my
刪掉第一個(gè) . 及其右邊的字符串
記憶的方法為:
# 是 去掉左邊(鍵盤上#在 $ 的左邊)
#去掉左邊第一個(gè)及左邊的字符串
##去掉最后一個(gè)及左邊的字符串
%是去掉右邊(鍵盤上% 在$ 的右邊)
%去掉最后一個(gè)及右邊的字符串
去掉第一個(gè)及右邊的字符串
單一符號(hào)是最小匹配;兩個(gè)符號(hào)是最大匹配
單一符號(hào)是最小匹配;兩個(gè)符號(hào)是最大匹配
[root@node01 ~]# echo ${file:0:5}
/dir1
提取最左邊的 5 個(gè)字節(jié)
[root@node01 ~]# echo ${file:5:5}
/dir2
提取第 5 個(gè)字節(jié)右邊的連續(xù)5個(gè)字節(jié)
也可以對(duì)變量值里的字符串作替換:
[root@node01 ~]# echo ${file/dir/path}
/path1/dir2/dir3/my.file.txt
將第一個(gè)dir 替換為path
[root@node01 ~]# echo ${file//dir/path}
/path1/path2/path3/my.file.txt
將全部dir 替換為 path
總結(jié)
以上所述是小編給大家介紹的Linux shell 提取文件名和目錄名的方法,希望對(duì)大家有所幫助!
您可能感興趣的文章:- Linux下如何高效切換目錄的方法
- linux shell 中判斷文件、目錄是否存在的方法
- 如何更改Linux(CentOS)系統(tǒng)下的MySQL數(shù)據(jù)庫(kù)目錄位置
- Linux系統(tǒng)中查找正在運(yùn)行的nginx目錄
- Linux 中批量提取文件夾下所有目錄及文件名稱
- 詳解Linux查找目錄下的按時(shí)間過(guò)濾的文件
- 在 Linux 中不使用 CD 命令進(jìn)入目錄/文件夾的方法
- Linux目錄切換實(shí)現(xiàn)代碼案例