我對shell腳本非常陌生,因此我現在對它不太瞭解。 我有一個應用程序,它創建一個半名未知的java文件,現在我嘗試寫一個腳本,它需要這個名字。
文件的已知名稱是/target/plugin-<dyn>.jar
,<dyn>
部分是未知的,可能幾乎任何東西(順便說一下,它主要是一個版本號與可變文本部分)。
現在我想將plugin-<dyn>
(不含.jar
)保存在變量中供以後使用。我在網上看了很多,但我找不到解決方案。Shell腳本 - 獲取動態生成文件的名稱
-1
A
回答
1
如果您需要獲取沒有擴展名的文件名.jar
。你可以參考我下面的bash腳本:
# for loop all files in target directory that matched plugin-*.jar
for f in target/plugin-*.jar
do
# print file name without extension .jar
echo ${f%.*}
done
更新:
# for loop all files in target directory that matched plugin-*.jar
for f in target/plugin-*.jar
do
# print file name without extension .jar
filename="${f##*/}" # get plugin-*.jar
echo ${filename%.*} # print plugin-* without jar
done
0
試試這個
filename="/target/plugin-<dyn>.jar"
echo ${filename} | awk -F [/.] '{print $(NF - 1)}'
echo ${filename} | sed 's/.*\/\([^/]*\)\.jar/\1/'
但如果<dyn>
有一個斜線,逗號或點。它可能不起作用
+0
這部分將會有點在我的情況下 – Sumafu
+0
@Sumafu sed工作正常。 –
需要添加'shopt -s nullglob'作爲沒有匹配的情況。 –
這也返回路徑'./target/',但我只需要文件名 – Sumafu
我找到了一個解決方案,首先用cd進入目錄,之後我用cd回到父目錄 – Sumafu