В том, как _ {}
назначает имя файла для $1
, есть две вещи. Во-первых, find
работает -exec
: он запускает следующие аргументы (вплоть до экранированного ;
) как команду, но с {}
заменяется путем к пути к найденному файлу. Таким образом, если он найдет ./somefile.HEIC
, он запустит эквивалент команды:
sh -c 'magick convert $1 "${1%.HEIC}.JPG"' _ ./somefile.HEIC
Вторая часть - это команда sh
. sh
может сделать несколько вещей, но если ему дана опция -c
, он принимает сразу следующий аргумент (magick convert $1 "${1%.HEIC}.JPG"
) в качестве командной строки для анализа и запуска, что-то вроде маленького мини-скрипта. Аргументы после этого принимаются в качестве аргументов для этого мини-скрипта, начиная с $0
. В этом случае это означает, что он запускает мини-скрипт с $0
, установленным на _
, и $1
, установленным на "./somefile.HEIC". Если было предоставлено больше аргументов, они были бы $2
, $3
и т. Д.