Tente:
for i in 'find . -type f -name "*.png"'
do
optipng -o7 "$i"
done
Não testei, mas deve funcionar assim. Se você precisar testá-lo, altere a linha optipng -o7 $i
com echo $i
para ver se obteve o arquivo correto.
Eu tenho o MediaWiki 1.25.2 instalado em minha máquina VirtualBox de 64 bits do Debian 8.1 e gostaria de poder fazer o upload do diretório images/
desta instalação para o meu DropBox. Sendo um pão-duro estou tentando minimizar o tamanho deste diretório de imagens, otimizando os PNGs encontrados com optipng
, para que eu não acabe com um DropBox tão cheio que eu precise pagar por mais armazenamento. Meu Wiki tem no momento 182 PNGs que eu enviei para ele (junto com mais de uma centena de outras que são miniaturas desses PNGs originais e dos SVGs que eu tenho no meu Wiki), então executando optipng -o7 <filename>
em cada um desses arquivos manualmente será muito tedioso.
Por isso estou aqui perguntando, como eu poderia escrever um script bash que irá automaticamente fazer isso por mim. Agora eu sei algumas partes do quebra-cabeça de como fazer isso, como eu sei que o programa find
pode gerar listas de arquivos com uma extensão de arquivo especificada em um local especificado (por exemplo, executando sudo find . -type f -name "*.png"
do diretório images/
que para mim está em /var/lib/mediawiki/images
irá listar todos os PNGs nele), mas eu não sei como usar este programa para criar um arquivo de texto contendo todos os nomes de arquivos relativos a este diretório (por exemplo, f/f1/Frugalware_Linux_screenshot.png
). Eu também não sei como obter optipng
para otimizar PNGs listados em um arquivo de texto.
simplesmente use find
aqui:
find (...your filters ...) -exec optipng -o7 '{}' +
observe que +
tentará usar o máximo de find
de resultados como argumento para optipng
, o que é bom, pois esse programa aceita vários arquivos como argumentos. Observe que +
só funciona se for o último argumento para um comando -exec
. A alternativa
find (...filters...) -exec optipng -o7 '{}' \;
Executa optipng
uma vez por resultado e, portanto, é muito mais lento.
Nota lateral: {}
in find
representa o resultado do nome do arquivo da sua pesquisa, -exec
permitirá a ececução de um comando.