我尝试使用该find
命令查找特定文件的列表,然后希望将每个文件通过管道传输到另一个命令...另一个命令是 Azure CLI 命令行。我尝试使用下面的命令:
find /folder -name exclude1 -prune -o -name exclude2 -prune -o -name *.bicep -print -exec az bicep build {}
但这只会引发错误find: missing argument to -exec
我可以从结果中创建一个数组find
,然后在 for 循环中使用该数组将每个元素传递到az bicep build
命令中吗?
顺便说一句...如果没有参数-exec
,该find
命令将返回我正在查找的结果集。
答案1
它返回的原因find: missing argument to -exec
是因为参数需要用或-exec
终止。该语法会将尽可能多的参数传递给单个命令,例如.该语法将为每个文件运行一个新命令,仅使用一个文件作为参数,这可能正是您所需要的。+
\;
+
az bicep build file1 file2 file3
\;
根据您的 shell 和当前目录中的文件,它可能会尝试解析*.bicep
和{}
,而应该将其传递给find
.为了安全起见,这些也应该被引用。
以下命令应该可以满足您的需要:
find /folder -name exclude1 -prune -o -name exclude2 -prune -o -name '*.bicep' -print -exec az bicep build '{}' \;