有人可以解释一下 bash 末尾符号的内部工作原理:“_ {} \;”

Can someone explain the inner working of the symbols at the end of this bash: “_ {} \;”

我运行在shell下面命令批量转换.HEIC个文件到.JPG个文件,命令成功,但是有一部分我不知道没看懂:

find . -name '*.HEIC' -exec sh -c 'magick convert  "${1%.HEIC}.JPG"' _ {} \;

显然 _ {}find 结果赋值给 </code>,但是怎么做呢?我在 google 和这里都找不到解释,而且在 <code>man find 上也没有任何运气。答案很可能就在这里,但这些符号不太好搜索。

那么问题来了,_ {}如何给赋值呢?是否可以使用 find/ 或其他命令为其分配多个变量?

_ {} 如何将文件名分配给 </code> 涉及两件事。首先,<code>find-exec 是如何工作的:它 运行 将以下参数(直到转义的 ;)作为命令,但 {} 替换为它找到的文件的路径。因此,如果它找到 ./somefile.HEIC,它将 运行 相当于命令:

sh -c 'magick convert  "${1%.HEIC}.JPG"' _ ./somefile.HEIC

第二部分是sh命令。 sh 可以做很多事情,但是如果给它一个 -c 选项,它会将紧随其后的参数 (magick convert "${1%.HEIC}.JPG") 作为要解析的命令字符串和 运行,有点像一个小的迷你脚本。之后的参数作为该迷你脚本的参数,以 [=22=] 开头。在这种情况下,这意味着它 运行 是 [=22=] 设置为 _</code> 设置为“./somefile.HEIC” 的迷你脚本。如果提供更多参数,它们将是 <code>