我有一堆文件夹,其中有一个名为 360 的子文件夹。
find . -name '360' -type d -exec 'echo "{}"' \;
Run Code Online (Sandbox Code Playgroud)
输出:
find: echo "./workspace/6875538616c6/raw/2850cd9cf25b/360": No such file or directory
Run Code Online (Sandbox Code Playgroud)
对于每个找到的项目,我想做一个 curl 调用,并触发 Jenkins 构建作业。我的问题是 ./ 一开始的部分。我应该能够像这样切断它:
find . -name '360' -type d -exec 'echo {} | cut -c 2-' \;
Run Code Online (Sandbox Code Playgroud)
但是因为它以 ./ 开头,所以它只会被执行(“没有这样的文件或目录”)。如何在没有前导的情况下从 find 获得输出./
?
更新:
这是 jenkins curl 调用的全部内容:
find reallylongfolderstructure -name '360' -type d -exec 'curl http://user:token@ourdomain.net/jenkins/job/jobname/buildWithParameters?token=ourtoken¶meter={}' \;
Run Code Online (Sandbox Code Playgroud)
输出
08:53:52 find: ‘curl http://user:token@ourdomain/jenkins/job/jobname/buildWithParameters?token=ourtoken¶meter=reallylongfolderstructure/something/lol/360’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
roa*_*ima 16
你写
因为它以 ./ 开头,所以它只会被执行(“没有这样的文件或目录”)。
这不是正在发生的事情。您已为 的find ... -exec
参数提供了一个命令echo "{}"
。请注意,这不是echo
由find
;找到的目录。它是一个在其名称中包含一个空格的单个命令。该find
命令(相当合理)无法执行名为echo "./workspace/6875538616c6/raw/2850cd9cf25b/360"
.
删除-exec
参数周围的单引号,您可能会发现不需要任何其他更改或解决方法:
find . -name '360' -type d -exec echo "{}" \;
Run Code Online (Sandbox Code Playgroud)
同样,在这里您需要删除传递给 的整个值的引用-exec
。但在这种情况下,您仍然需要引用存储参数,以便 shell 无法解释&
等。
find reallylongfolderstructure -name '360' -type d -exec curl 'http://user:token@ourdomain.net/jenkins/job/jobname/buildWithParameters?token=ourtoken¶meter={}' \;
Run Code Online (Sandbox Code Playgroud)