我正在寻找一种从文件名生成目录的方法,版本的一部分。我需要将此新目录设置为变量,以便提取,chmod symlink等。
find *.jar | grep -Ei "*-[0-9]."
/test/gb0100-sting-junit5-1.5.0.0.jar
我只需要gb0100-sting-junit5部分。
我知道我只能过滤版本部分,但之前我不知道如何对部分进行正则表达式
grep -Po "-[0-9].[0-9].[0-9].[0-9]"
对于更一般的情况,当版本号可能超过一个数字时,请考虑以下选项
使用bash模式,消除数字/点和jar后缀的尾随顺序
shopt -s extglob
for file in *.jar ; do
printf '%s\n' "${file%%-+([0-9.]).jar}"
done
有时,使用功能更强大的REGEX更容易,它可以用来定义拒绝诸如'5..2.jar'之类的组合的规则。而且,制作REGEX规则通常比模式规则更容易。] >
for file in *.jar ; do
[[ "$file" =~ ^(.*)-+([0-9])(\.[0-9]+)*.jar ]] && printf '%s\n' "${BASH_REMATCH[1]}"
done