Find

將“查找”結果通過管道傳輸到 Azure CLI

  • September 24, 2021

我正在嘗試使用該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命令將返回我正在尋找的結果集。

它返回的原因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 '{}' \;

引用自:https://unix.stackexchange.com/questions/670526