Tenho uma pasta contendo muitas subpastas cheias de imagens. Veja a imagem anexa, por exemplo.
Basicamente, quero percorrer todos eles e reduzir o tamanho das imagens para que nenhuma tenha mais de 1024 pixels. Eles são todos JPEG.
Estou ciente dos comandos SIPS, ou seja
sips -Z 1024 *.png
No entanto, isso só funciona se todas as imagens estiverem no diretório atual.
Como faço para configurá-lo para percorrer todos os subdiretórios?
Responder1
Você pode executá-lo com find:find images/path -type f -name '*.png' -exec sips -Z 1024 {} \;
Find irá procurar por arquivos (-type f), com extensão png (-name '*.png') dentro do diretório 'images/path' e executar o comando no parâmetro, substituindo "{}" pelo nome do arquivo, você precisa finalizar o comando com "\;".
Responder2
Consegui alterar um pequeno script bash que funcionou para mim
#!/bin/bash
find "foldername" -type f | \
while read file ; do
echo "processing ${file}"
sips -Z 2000 ${file}
done