images/
私は64ビットDebian 8.1 VirtualBoxシステムにMediaWiki 1.25.2をインストールし、そのインストールから自分のDropBoxにディレクトリをアップロードできるようにしたいと思います。私は薄暗い人なので、optipng
DropBoxがいっぱいで、より多くのストレージスペースを支払う必要がないように、イメージディレクトリのPNGを最適化してイメージディレクトリのサイズを最小限に抑えようとしています。私のWikiには現在私がアップロードした182個のPNGがあります(そしてwikiの元のPNGとSVGのサムネイルである100以上の他のサムネイルを含む)。したがって、optipng -o7 <filename>
これを手動で実行するのは非常に退屈です。
だからここに尋ねたいです。このタスクを自動的に実行するようにbashスクリプトをどのように書くことができますか?今、私はこれを行う方法についていくつかのパズルを知っています。たとえば、プログラムがfind
指定された場所に指定されたファイル拡張子を持つファイルのリストを生成できることがわかります(たとえば、すべてのファイルがPNGとしてランダムにリストされているディレクトリsudo find . -type f -name "*.png"
で実行されます)。しかし、そのプログラムを使用して、そのディレクトリに関連するすべてのファイル名を含むテキストファイル(たとえば)を作成する方法がわかりません。また、テキストファイルにリストされているPNGを最適化する方法もわかりません。images/
/var/lib/mediawiki/images
f/f1/Frugalware_Linux_screenshot.png
optipng
答え1
find
ここで使用してください:
find (...your filters ...) -exec optipng -o7 '{}' +
できるだけ+
多くの結果を引数として使用しようとすることに注意してください。プログラムは複数のファイルを引数として受け入れるので大丈夫です。これはコマンドの最後のパラメータである場合にのみ機能します。その他のオプションfind
optipng
+
-exec
find (...filters...) -exec optipng -o7 '{}' \;
各結果は一度だけ実行されるため、optipng
速度がはるかに遅くなります。
注:{}
inは、コマンドを実行できるfind
検索結果のファイル名を表します。-exec
答え2
努力する:
for i in `find . -type f -name "*.png"`
do
optipng -o7 "$i"
done
テストしませんでしたが、それはうまくいくはずです。テストする必要がある場合は、この行を変更して正しいファイルを取得したことを確認optipng -o7 $i
できます。echo $i