シェルスクリプトでディレクトリ内200KB以上ファイルサイズ検出方法

200KBを超えるファイル検出方法

Webサイト制作時にファイルサイズの大きすぎるファイルを読み込んでしまうことがある。

主に圧縮していない画像の場合が多いのだが、画像の場合は大量にある場合は目視で各ファイルサイズを調べることは困難であり時間がかかってしまう。

シェルスクリプトで200KBを超えるファイル検出

下記のようにシェルスクリプトを使えば200KBを超えるファイルを簡単に検出することができる。

#!/bin/bash

read -p "ディレクトリを相対パスで入力: " path
readonly MAX_BYTE=200
flag=false
size=`du -ak ${path}* | cut -f1`
file=`du -ak ${path}* | cut -f2`
declare -a a_size=()
declare -a f_name=()
a_size=(${size// / })
f_name=(${file// / })

# ${MAX_BYTE}KB以上のファイルサイズのファイル名を表示
for ((i = 0; i < ${#a_size[@]}; i++)) {
  if [ ${a_size[i]} -gt ${MAX_BYTE} -a "${f_name[i]%.*}" ]; then
    echo "${MAX_BYTE}KBを超えるファイルがあります! ${a_size[i]}KB ${f_name[i]}"
    flag=true
  fi
}

if [ ${flag} = false ]; then
  echo "${MAX_BYTE}KBを超えるファイルはありませんでした。"
fi

使い方はまずfile_size_check.shをダウンロードする

file_size_check.sh

実行すると「ディレクトリを相対パスで入力: 」と表示されるのでファイルサイズを調べるディレクトリを相対パスで入力する。

$ ./file_size_check.sh
ディレクトリを相対パスで入力: ./img/
200KBを超えるファイルが含まれています! 508KB ./img/foo.jpg

-bash: ./file_size_check.sh: Permission denied と表示された場合はchmodで実行権限を付与する。

$ chmod 764 file_size_check.sh

Gitを使用しているのであればgit_hooksのpre-commitに含めて、コミット時に自動チェックするようにすればshファイルを手動で実行する手間が省ける。