使用 Find 和 Prune 命令在 GitLab runner 中过滤掉文件名时遇到问题

Trouble using Find and Prune Command to filter out file name in GitLab runner

所以,这很奇怪,我不确定是什么原因造成的。(我对 cli 非常陌生)

我有一个目录 ==> SomeDirectory 我有两个 jar 文件 ==> original-processor.jar and processor.jar 我只想 return processor.jar 并将其设置为变量,基本上任何时候有原始 -* 我想忽略它。

我在 EC2(亚马逊 linux)中执行了以下操作并且有效

JAR_FILE_NAME=$(basename $( find . -maxdepth 1 -type f -name '*original*.jar' -prune -o -name '*.jar' -print))

输出==> processor.jar

但是当我 运行 在 GitLab 的 cicd 管道中执行完全相同的命令时:

输出==> original-processor.jar

有谁知道差异可能是什么?这是实现我想要的最好方法吗?

感谢任何意见。

-prune 仅对目录有意义,它会阻止进入目录。当元素是一个文件时它没有效果。

如果您想从结果中排除某些内容,请在条件前使用 -not

find . -maxdepth 1 -type f -name '*.jar' -not -name '*original*.jar'

如果您正在使用 bash,您可以启用扩展通配符并使用否定匹配运算符。

shopt -s extglob
JAR_FILE_NAME=$(echo !(*original*).jar)