Eu tenho um diretório chamado src
cheio de subdiretórios e outras imagens. Eu tentei usar uma instrução bash para redimensioná-los automaticamente para outro diretório de destino chamado thumb
assim:
find ./src -type f -follow -iname '*.jp*g' -exec convert -resize 150x150x "{}" "./thumb/${size}/{}" \;
Isso não funcionou porque o thumb
diretório está inicialmente vazio e não tem a mesma estrutura de diretório que src
.
Tentei procurar, man convert
mas não consigo encontrar a opção de criar automaticamente os diretórios em convert
. Qual é uma maneira eficaz de converter todas as minhas imagens em um tamanho de miniatura no thumb
diretório? Preciso pré-criar todos os subdiretórios em miniatura?
EDITAR
Eu precedi o comando acima com isso:
find ./src -type d -follow -exec mkdir -p "thumb/${size}/{}" \;
Mas estou curioso se eu seria capaz de fazer tudo com um comando em vez de dois?
A filosofia do UNIX é ter comandos, que fazem uma coisa e apenas uma coisa. Comandos que podem gravar em um arquivo em vez de stdout já estão ampliando essa regra.
Se você pode fazer tudo em um comando depende de sua definição. Faz isso:
contar como um comando ou vários:
find
,sh
,mkdir
,dirname
,convert
? As quebras de linha são apenas para “legibilidade” .