很多時候在使用Linux的shell時,我們都需要對文件名或目錄名進行處理,通常的操作是由路徑中提取出文件名,從路徑中提取出目錄名,提取文件后綴名等等。例如,從路徑/dir1/dir2/file.txt中提取也文件名file.txt,提取出目錄/dir1/dir2,提取出文件后綴txt等。
下面介紹兩種常用的方法來進行相關(guān)的操作。
一、使用${}
1、${var##*/}
該命令的作用是去掉變量var從左邊算起的最后一個'/'字符及其左邊的內(nèi)容,返回從左邊算起的最后一個'/'(不含該字符)的右邊的內(nèi)容。使用例子及結(jié)果如下:

從運行結(jié)果可以看到,使用該命令,可以提取出我們需要的文件名file.txt。
若使用時在shell程序文件中,可以使用變量來保存這個結(jié)果,再加以利用,如file=${var##*/}
2、${var##*.}
該命令的作用是去掉變量var從左邊算起的最后一個'.'字符及其左邊的內(nèi)容,返回從左邊算起的最后一個'.'(不含該字符)的右邊的內(nèi)容。使用例子及結(jié)果如下:

從運行結(jié)果可以看到,使用該命令,可以提取出我們需要的文件后綴。
如果文件的后綴不僅有一個,例如,file.tar.gz,命令${var##*.}僅能提取最后一個后綴,而我想提取tar.gz時該怎么辦?那么就要用下面所說的${var#*.}命令了。
3、${var#*.}
該命令的作用是去掉變量var從左邊算起的第一個'.'字符及其左邊的內(nèi)容,返回從左邊算起第一個'.'(不含該字符)的右邊部分的內(nèi)容。使用例子及結(jié)果如下:

從運行結(jié)果可以看到,使用該命令,可以提取出文件的多個后綴。
4、${var%/*}
該命令的使用是去掉變量var從右邊算起的第一個'/'字符及其右邊的內(nèi)容,返回從右邊算起的第一個'/'(不含該字符)的左邊的內(nèi)容。使用例子及結(jié)果如下:

從運行的結(jié)果可以看到,使用該命令,可以提取出我們需要的文件所在的目錄
5、${var%%.*}
該命令的使用是去掉變量var從右邊算起的最后一個'.'字符及其右邊的內(nèi)容,返回從右邊算起的最后一個'.'(不含該字符)的左邊的內(nèi)容。使用例子及結(jié)果如下:

當我們需要建立一個與文件名相同名字(沒有后綴)的目錄與對應(yīng)的文件相對應(yīng)時,就可以使用該命令來進行操作。例如,解壓文件的情況就與此類似,我們壓縮文件file.zip時,會在與file.zip同級目錄下建立一個名為file的目錄。
6、${}總結(jié)
新聞熱點
疑難解答