使用 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)
所以,这很奇怪,我不确定是什么原因造成的。(我对 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)