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.