Tendo problemas com o comando `convert` quando o destino está faltando subdiretórios

Tendo problemas com o comando `convert` quando o destino está faltando subdiretórios

Eu tenho um diretório chamado srccheio de subdiretórios e outras imagens. Tentei usar uma instrução bash para redimensioná-los automaticamente para outro diretório de destino chamado thumbassim:

find ./src -type f -follow -iname '*.jp*g' -exec convert -resize 150x150x "{}" "./thumb/${size}/{}" \;

Isso não funcionou porque o thumbdiretório está inicialmente vazio e não tem a mesma estrutura de diretórios que o src.

Tentei procurar, man convertmas não consigo encontrar a opção de ativar automaticamente os diretórios convert. Qual é uma maneira eficaz de converter todas as minhas imagens em tamanho de miniatura no thumbdiretório? Preciso pré-criar todos os subdiretórios em miniatura?


EDITAR

Eu precedi o comando acima com isto:

find ./src -type d -follow -exec mkdir -p "thumb/${size}/{}" \;

Mas estou curioso para saber se conseguiria fazer tudo com um comando em vez de dois?

Responder1

A filosofia do UNIX é ter comandos que fazem uma coisa e apenas uma coisa. Comandos que podem gravar em um arquivo em vez desaída padrãojá estão ampliando esta regra.

Se você pode fazer tudo em um comando depende da sua definição. Faz isso:

find ./src -type f -follow -iname '*.jp*g' -exec /bin/sh -c \
'mkdir -p `dirname "thumb/'${size}'/{}"` &&'\
'convert -resize 150x150x "{}" "./thumb/'${size}'/{}' \;

conte como um comando ou vários: find, sh, mkdir, dirname, convert? As quebras de linha são apenas para"legibilidade".

informação relacionada