ディスク使用量が多いディレクトリを抽出するbashスクリプト

ディスク使用量が多いディレクトリを抽出するbashスクリプトを作成しています。
duコマンドの出力結果からメガバイド以上のパスを抽出しています。

(1)duコマンドの出力例

# du --max-depth=1 -h -x /var/tmp
375M    /var/tmp/yum-winuser-71dgm6
4.0K    /var/tmp/pear-build-rootp6qfrT
43M     /var/tmp/yum-wp-LxzTYT
955M    /var/tmp/yum-php-x0qo85
144K    /var/tmp/tmpcdkwC8
1.4G    /var/tmp
 :
 :

(2)正規表現を使って抽出


 
・二重角括弧、”=~”を使う。
・行頭から[数値][少数点又は数値]・・[GまたはM]と続く文字列のみ表示
 
if [[ $line =~ ^[0-9][\.|0-9]*[G|M].* ]]; then
 
※数値部分の正規表現は[\d]の指定方法では意図した通りに動作しませんでした。
 
●サンプルプログラム

#!/bin/bash

file_disk="/home/user/bkup/tmp_disk"

du --max-depth=1 -h -x /home/user > $file_disk
while read line; do
  if [[ $line =~ ^[0-9][\.|0-9]*[G|M].* ]]; then
    echo $line
  fi
done < $file_disk

 

(3)出力結果をCSVファイルで出力


 
●修整内容
 
・trコマンドで半角スペースをカンマに置換。-sオプションで連続する半角スペースを一つにする。
・出力結果に日付を追加
 
●サンプルプログラム

#!/bin/bash

ftmp_disk="/home/user/bkup/tmp_disk"
fout_disk="/home/user/bkup/out_disk"

du --max-depth=1 -h -x /home/user > $ftmp_disk
while read line; do
  if [[ $line =~ ^[0-9][\.|0-9]*[G|M].* ]]; then
    echo "`date +"%Y/%m/%d"`,`echo $line | tr -s " " ,`" >> $fout_disk
  fi
done < $ftmp_disk
関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です