Como recursivamente listar imagens por tag exif?

0

Eu tenho um diretório cheio de diretórios cheios de imagens, todos com várias tags "keyword". Como eu poderia (em um shell Linux) listar todas imagens contendo keyword1 e / ou keyword2 ?

    
por yPhil 04.07.2017 / 18:53

2 respostas

0

OK, aqui está o que eu ponho juntos:

exiftool -ext .JPG -fast -p '$directory/$filename;$Keywords' -qq -r -m . 2> /dev/null | grep -i '\;.*keyword1\|keyword2\|keyword3' | sed 's/\;.*//'

Isto irá produzir uma lista limpa de todos os nomes de arquivos contendo qualquer uma das palavras-chave, das quais você pode colocar quantos você quiser; Você pode então alimentá-lo para um espectador para construir uma galeria / apresentação de slides on the fly, como nesta função final:

px-image-tag-viewer () {
    TAGS=
    SLIDESHOW_OPS=
    for i in ${*}; do
        [[ ${i} =~ '^[0-9]+$' ]] && SLIDESHOW_OPS="-D${i} --fullscreen" || TAGS+="${i}\|"
    done

    exiftool -ext .JPG -fast -p '$directory/$filename;$Keywords' -qq -r -m . 2> /dev/null | grep -i "\;.*${TAGS: : -2}" | sed 's/\;.*//' > /tmp/imglist.txt 
    feh ${SLIDESHOW_OPS} --auto-zoom --filelist /tmp/imglist.txt
    rm -fv /tmp/imglist.txt
}

Entre no diretório e invoque-o assim:

px-image-tag-viewer holidays sigma horiz 5

Com as tags separadas por espaços e um número opcional de segundos para uma apresentação de slides.

    
por 04.07.2017 / 20:27
0

Você pode obter o que precisa com exiftool sozinho, usando sua sintaxe condicional -if e a sinalização de saída de impressão -p da seguinte forma:

exiftool -ext JPG -if '$Keywords =~ /(keyword1|keyword2)/' -p '$directory/$filename' -r .

Isso recursivamente varre o diretório atual, usando uma correspondência de expressão regular em palavras-chave, imprimindo seus nomes de arquivo. É mais ou menos o que você tem com grep e sed , mas usando apenas exiftool sozinho. Você obtém mais poder porque a expressão -if é semelhante a Perl e pode fazer mais do que apenas correspondência de string (como gt , lt e outros operadores Perl).

Ajuste ou remova a verificação -ext JPG conforme necessário (não faz distinção entre maiúsculas e minúsculas) para outros formatos de arquivo e, da mesma forma, ajuste a opção -p para controlar a formatação da saída.

    
por 24.09.2017 / 16:43