我对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