Linuxシェルでxピクセルを超えるPNG画像を見つける
あなたがあなたのウェブサイトのデザインを変えることに取り組もうとしているとき、あなたはあなたの記事のコンテンツの中の写真の幅に気を配らなければなりません。私が書いた記事の大部分には非常に大きなスクリーンショットがあるので、サイドバーを増やしたい場合は、どの絵が広すぎて新しいデザインには収まりきらないかを判断することが重要です。.
私はプログラマーなので、これを実行するための小さなアプリケーションを作成するのは簡単ですが、考え始めました…なぜLinuxコマンドラインでこれを実行できないのですか。?
私が考え出した最初のことは、PNG画像に対して「file」コマンドを実行すると、PNG画像にサイズデータが表示されることです。
$ file image3.png
image3.png:PNG画像データ、613 x 657、8ビット/カラーRGBA、ノンインターレース
このサイトの写真の99%はPNG形式なのでとても便利です。だから今私のアップロードディレクトリ内のすべてのファイルのためのループにそれを投げるために:
*。pngのfの$;ファイル$ fの実行;完了
image.png:PNG画像データ、631 x 185、8ビット/カラーRGBA、ノンインターレース
image1.png:PNG画像データ、631 x 96、8ビット/カラーRGBA、ノンインターレース
image10.png:PNG画像データ、375 x 395、8ビット/カラーRGBA、ノンインターレース
image11.png:PNG画像データ、484×241、8ビット/カラーRGBA、ノンインターレース
-切り取られた-
これはもっと便利ですが、データを並べ替えるにはデータをExcelまたは同様のアプリケーションに取り込む必要があるので、linuxの「cut」コマンドを使用して幅の欄だけを取り出すことにしました。.
-f5パラメーターがcutに5列目を取るように指示し、-d \の後にスペースが区切り文字として使用されるように指示します。スラッシュ\文字は、空白としてではなく文字としてスペースを使用するようシェルに指示するためのエスケープ文字です。.
* .pngのfの$; $ fファイルの実行| cut -f5 -d \; done
631
631
375
484
-切り取られた-
完全に有用な出力ではないですか?それをbashのif文でプッシュして、幅が600ピクセルを超える場合にのみfileコマンドの出力を表示しましょう。.
「file $ f | |」の周囲の '(バックティック)マークに注目してください。これは、 'の内側のコマンドが単一の出力として処理され、ifステートメントに入力されることを示します。ここでは、-gt(より大きい)を使用します。大括弧[]の両側にはスペースが必要です。
* .pngのfに対して; ['file $ f | cut -f5 -d \ '-gt 600];それからファイル$ f; fi; done
image.png:PNG画像データ、631 x 185、8ビット/カラーRGBA、ノンインターレース
image1.png:PNG画像データ、631 x 96、8ビット/カラーRGBA、ノンインターレース
image17.png:PNG画像データ、638×340、8ビット/カラーRGBA、ノンインターレース
image18.png:PNG画像データ、608 x 448、8ビット/カラーRGBA、ノンインターレース
-切り取られた-
これで、幅600ピクセルを超えるすべてのファイルのリストができました。ファイル名を他の場所にコピーまたは移動する必要がある場合は、最後に「ファイル$ f」を調整してファイル名をエコーアウトすることができます。
* .pngのfに対して; ['file $ f | cut -f5 -d \ '-gt 600];それから$ fをエコーします; fi; done
image.png
image1.png
image17.png
image18.png
-切り取られた-
Linuxシェルは非常に強力です。この解決法は誰にとっても実際的ではありませんが、シェルで作業する方法を知っておくと良いでしょう。.