Naoki Otsu

画像サイズ(ファイルサイズ)が大きいものを列挙するコマンド(macOS)

2020-04-06

あるディレクトリ内の画像を再帰的に検索して、画像サイズ(ファイルサイズ)が大きいものがあったらそれらを列挙して一括圧縮をかけたい時がある。
そんな時のコマンドの備忘録。
findコマンドとawk(オーク)コマンドを使って確認できる。
awkはそれ自体がプログラミング言語の1つで、入力を1行ずつ受け取りそれらを使って何らかの処理することが可能。

今いるディレクトリ以下を再帰的に検索して、1MB(およそ1000KB)以上のファイルを列挙したい時

$ find . -type f -size +1000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

# ./dist/images/2018-11-23/xcode.png: 1.2M
# ./dist/images/2018-11-23/iphone.png: 1.5M
# ......

findで ls -lh を実行してファイル情報を再帰的に出力して、
それをawkコマンドに渡して、9行目のファイル名と5行目のファイルサイズを出力する感じっぽい。

$ ls -lh

# 9行目がファイル名、5行目がファイルサイズ、これを出力するあんばい
# -rw-r--r--@    1 naokiotsu  staff   605B  6  1  2019 README.md
# drwxr-xr-x     7 naokiotsu  staff   224B 11 22 19:08 assets
# ......