Comment écrire un script pour optimiser automatiquement tous les PNG dans mon directory d'images MediaWiki?

J'ai MediaWiki 1.25.2 installé sur ma machine Debian 8.1 VirtualBox 64 bits et j'aimerais pouvoir download le directory images/ de cette installation vers mon DropBox. J'essaie de minimiser la taille de ce directory d'images en optimisant les PNG qui s'y trouvent avec optipng , de sorte que je ne me retrouve pas avec un DropBox si complet que je dois payer pour plus de stockage. Mon Wiki a actuellement 182 PNG que j'ai téléchargés (avec bien plus d'une centaine d'autres qui sont des vignettes de ces PNG originaux et des SVGs que j'ai sur mon Wiki), exécutant ainsi optipng -o7 <filename> sur chaque de ces files manuellement sera très fastidieux.

Par conséquent, je request ici, comment je pourrais écrire un script bash qui va automatiquement faire cela pour moi. Maintenant, je sais quelques morceaux du puzzle de la façon de le faire, comme je sais que le programme de find peut générer des lists de files avec une extension de file spécifiée dans un location spécifié (par exemple, en exécutant sudo find . -type f -name "*.png" dans le directory /var/lib/mediawiki/images listra tous les PNG qui s'y trouvent), mais je ne sais pas comment utiliser ce programme pour créer un file text contenant tous les noms de files relatifs à ce directory (par exemple, f/f1/Frugalware_Linux_screenshot.png ). Je ne sais pas comment get optipng pour optimiser les PNG répertoriés dans un file text.

Essayer:

 for i in `find . -type f -name "*.png"` do optipng -o7 "$i" done 

Je n'ai pas testé mais ça devrait marcher comme ça. Si vous avez besoin de le tester, vous pouvez changer la ligne optipng -o7 $i avec echo $i pour voir si vous obtenez le file correct.

simplement utiliser find ici:

 find (...your filters ...) -exec optipng -o7 '{}' + 

notez que le + essaiera d'utiliser autant de résultats de search comme argument pour optipng que possible, ce qui est bien car ce programme accepte plusieurs files comme arguments. Notez que + ne fonctionne que s'il s'agit du dernier argument d'une command -exec . L'alternative

 find (...filters...) -exec optipng -o7 '{}' \; 

Exécutera optipng une fois par résultat et est donc beaucoup plus lent.

Note secondaire: {} dans find représente le résultat du nom de file de votre search, -exec permettra d'ececuting une command.