如何使用Linux shell提取文件名和目錄名?

ADVERTISEMENT

如何使用Linux shell提取文件名和目錄名?

很多時候在使用Linux的shell時,我們都需要對文件名或目錄名進行處理,通常的操作是由路徑中提取出文件名,從路徑中提取出目錄名,提取文件後綴名等等。例如,從路徑/dir1/dir2/file.txt中提取也文件名file.txt,提取出目錄/dir1/dir2,提取出文件後綴txt等。

下面介紹兩種常用的方法來進行相關的操作。

一、使用$

該命令的作用是去掉變量var從左邊算起的最後一個'/'字符及其左邊的內容,返回從左邊算起的最後一個'/'(不含該字符)的右邊的內容。使用例子及結果如下:

從運行結果可以看到,使用該命令,可以提取出我們需要的文件名file.txt。

若使用時在shell程序文件中,可以使用變量來保存這個結果,再加以利用,如file=$

該命令的作用是去掉變量var從左邊算起的最後一個'.'字符及其左邊的內容,返回從左邊算起的最後一個'.'(不含該字符)的右邊的內容。使用例子及結果如下:

從運行結果可以看到,使用該命令,可以提取出我們需要的文件後綴。

ADVERTISEMENT

如果文件的後綴不僅有一個,例如,file.tar.gz,命令$

該命令的作用是去掉變量var從左邊算起的第一個'.'字符及其左邊的內容,返回從左邊算起第一個'.'(不含該字符)的右邊部分的內容。使用例子及結果如下:

從運行結果可以看到,使用該命令,可以提取出文件的多個後綴。

4、$

該命令的使用是去掉變量var從右邊算起的第一個'/'字符及其右邊的內容,返回從右邊算起的第一個'/'(不含該字符)的左邊的內容。使用例子及結果如下:

從運行的結果可以看到,使用該命令,可以提取出我們需要的文件所在的目錄

5、$

該命令的使用是去掉變量var從右邊算起的最後一個'.'字符及其右邊的內容,返回從右邊算起的最後一個'.'(不含該字符)的左邊的內容。使用例子及結果如下:

ADVERTISEMENT

當我們需要建立一個與文件名相同名字(沒有後綴)的目錄與對應的文件相對應時,就可以使用該命令來進行操作。例如,解壓文件的情況就與此類似,我們壓縮文件file.zip時,會在與file.zip同級目錄下建立一個名為file的目錄。

6、$並不是專門為提取文件名和目錄名設計的命令,那麼basename和dirname命令就是專門為做這一件事而已準備的了。

1、basename

該命令的作用是從路徑中提取出文件名,使用方法為basename NAME [SUFFIX]。

1)從路徑中提出出文件名(帶後綴),例子如下:

2)從上面命令的用法中可以看到,後綴(SUFFIX)是一個可選項。所以,若隻想提取出文件名file,而不帶有後綴,還可以在變量的後面加上後綴名,例子如下:

2、dirname

該命令的作用是從路徑中提取出目錄名,使用方法為 dirname NAME

使用例子如下:

這樣就提取出了file.txt文件所在的目錄。

注:該命令不僅能提取出普通文件所的目錄,它能提取出任何文件所在的目錄,例如目錄所在的目錄,如下:

它提取出了目錄dir2所在的目錄dir1.

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持路飯。

本文地址:

ADVERTISEMENT