2012-02-10 197 views
1

我是Linux的新手,並試圖從bash腳本中的絕對路徑中提取部分文件名。例如,如果路徑是/opt/data/filename-attribute.dat,我能夠得到的目錄路徑和文件如下:在shell中提取部分文件名

sourcedir=`dirname $path` 
name=`basename $path` 

我想從文件中提取屬性並想知道是否有一個在shell腳本中執行此操作的快速方法。我可以通過

f=${name%%[.]*} 

並且想提取屬性。

+0

在後綴總是精確'.dat'你可以使用'基名$路徑.dat'等... – 2012-02-10 20:50:30

+2

您正在詢問關於文件擴展名。屬性是一個非常不同的東西。見attr(5)(例如,執行「man 5 attr」) – 2012-02-10 20:58:41

回答

1

最簡單的方法就是做兩個步驟:

f="${name%.*}" # strip everything from the last dot onward 
f="${f##*-}"  # strip everything up through the last hyphen 
+0

工作正常。謝謝 – LoudKur 2012-02-10 23:53:23

0

如果我理解你的權利

a="${f#*-}"