スクリプトの練習3

ディレクトリ内のログファイル(logs-で始まる)で、一定数以上で古いほうから削除したい。

#!/bin/bash
cnt=0
list=$(ls -lt /tmp)
while read ff
do
  if expr "${ff}" : ".* logs-.*" > /dev/null
  then
     fname=$(echo ${ff} | awk 'BEGIN{FS=" "}{print $9}')
     echo ${fname}
     cnt=`expr $cnt + 1`
     echo ${cnt}
     if [ ${cnt} -gt 6 ]
     then
        echo rm ${fname}
        rm ${fname}
     fi
  fi
done <<< "${list}"

あと、ls -lt -full-timeとすると、更新時刻が以下になる。

# ls -lt --full-time /tmp/logs-*
-rw-r--r-- 1 root root 242858 2009-11-13 16:42:25.329816998 +0900 /tmp/logs-20091113-164213.tgz
-rw-r--r-- 1 root root 205866 2009-11-13 13:48:09.629816998 +0900 /tmp/logs-20091113-134758.tgz

同じような表記で現在時刻を採るには以下のように指定する

# date +"%Y-%m-%d %X"
2009-11-13 18:04:53