MediaWiki1.25.2を64ビットのDebian8.1 VirtualBoxマシンにインストールしていて、このインストールからDropBoxにimages/
ディレクトリをアップロードできるようにしたいと思います。安いスケートなので、optipng
で見つかったPNGを最適化することで、この画像ディレクトリのサイズを最小化しようとしています。そうすれば、DropBoxがいっぱいになって、さらにお金を払う必要がなくなります。ストレージ。私のWikiには現在182個のPNGがアップロードされています(これらの元のPNGとWikiにあるSVGのサムネイルである他の100個をはるかに超えるものもあります)ので、それぞれでoptipng -o7 <filename>
を実行します。これらのファイルを手動で作成するのは非常に面倒です。
したがって、私はここで、これを自動的に実行するbashスクリプトをどのように作成するかを尋ねています。 find
プログラムが、指定された場所に指定されたファイル拡張子を持つファイルのリストを生成できることを知っているように、これを行う方法のパズルのいくつかの部分を知っています(たとえば、Sudo find . -type f -name "*.png"
を実行します私にとってはimages/
にある/var/lib/mediawiki/images
ディレクトリにすべてのPNGが一覧表示されます)が、このプログラムを使用して、このディレクトリに関連するすべてのファイル名を含むテキストファイルを作成する方法がわかりません。 (例:f/f1/Frugalware_Linux_screenshot.png
)。また、テキストファイルにリストされているPNGを最適化するためにoptipng
を取得する方法もわかりません。
試してみてください:
for i in `find . -type f -name "*.png"`
do
optipng -o7 "$i"
done
それをテストしませんでしたが、それはそのように動作するはずです。テストする必要がある場合は、行を変更する可能性がありますoptipng -o7 $i
とecho $i
正しいファイルを取得するかどうかを確認します。
ここでfind
を使用するだけです:
find (...your filters ...) -exec optipng -o7 '{}' +
+
はfind
の結果をできるだけ多くoptipng
の引数として使用しようとすることに注意してください。これは、このプログラムが複数のファイルを引数として受け入れるため問題ありません。 +
は、それが-exec
コマンドの最後の引数である場合にのみ機能することに注意してください。代替案
find (...filters...) -exec optipng -o7 '{}' \;
結果ごとに1回optipng
を実行するため、処理速度が大幅に低下します。
補足:find
の{}
は、検索結果のファイル名を表します。-exec
を使用すると、コマンドを実行できます。