find -exe c двумя командами (gdalinfo и jq) - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь объединить два процесса после команды find в оболочке; Я намерен найти определенные файлы GeoTiff и получить их площадь путем вычитания ненулевого количества из ширины * высоты, первая часть выполняется в gdalinfo, а вторая - с jq на json,

Я могу объединить их вместе в один файл:

gdalinfo -json -hist odm_orthophoto.tif | jq '.size[0]*.size[1]-.bands[0].histogram.buckets[0]'

Но с функцией find он явно не обращает внимания на второй -exec

find . -name "odm_orthophoto.tif" -exec gdalinfo -json -hist {} \; -exec jq '.size[0]*.size[1]-.bands[0].histogram.buckets[0]' {} \;

1 Ответ

2 голосов
/ 09 июля 2020

Вот так (будет очень сложно объединить 2 команды find -exe c, если у вас более 1 файла):

find . -name "odm_orthophoto.tif" -exec bash -c '
    for file; do
        {
            gdalinfo -json -hist "$file"
            jq ".size[0]*.size[1]-.bands[0].histogram.buckets[0]" "$file"
        } | tee "new_$file"
    done
' -- {} +

Тогда:

ls -ltr new_*

См. с помощью find

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...