指定したディレクトリの総容量を計算する
スクリプト名: lsdu.sh
書式: lsdu.sh ディレクトリ名
目的: ls -lの結果でディレクトリの容量を計算して表示する
戻り値: 成功:0 失敗:1 エラー:9
#!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Tmp_Lock.sh && . Chk_File.sh || exit 9 Arg_Nums -ge 1 "$@" || exit 9 Chk_File -drx "$1" ||\ { Error_Msg "$0" "$1: Permission denied."; exit 1; } #一時ファイルの作成 Tmp_Lock -tm 1 || exit 9 trap "Tmp_Lock -tr 1; exit 9" 1 2 3 9 15 #lsコマンドの結果をwhile readに渡し変数に格納する ls -lA "$1" | sed 1d | \ while read \ _TYPE_PERM _HEAD_LINE _UID _GID _SIZE _MONTH _DAY _TIME_YEAR _FILE_NAME; do #ファイルタイプを抜き出す _FILE_TYPE=$(echo $_TYPE_PERM | cut -c1) #ディレクトリならば容量表示を差し替え if [ $_FILE_TYPE = d ] ; then _SIZE=$(du -bs "$1/$_FILE_NAME" 2>/dev/null | awk '{print $1}') #許可属性の関係で正確な容量を割り出せない場合 du -bs "$1/$_FILE_NAME" &>/dev/null if [ $? != 0 ]; then _SIZE="+$_SIZE" fi fi #一時ファイルに保存 echo $_TYPE_PERM $_HARD_LINK $_UID $_GID $_SIZE $_MONTH $_DAY \ $_TIME_YEAR $_FILE_NAME >> "$_TMP_LOCK_FILE" done cat "$_TMP_LOCK_FILE" Tmp_Lock -tr 1 || exit 9