bash脚本写的一个东西,可以替代find . -type f -atime +N -exec ls {} \;

 1#!/bin/bash
 2#As the danger of rm i # it
 3#由于win系统与linux对回车的不同定义(郁闷了我很长时间) 特把最后一题源程序作为附件
 4#不让用原本非常简单的find 导致我在这道题上话花费拉很长时间 这个程序要求有tree这个命令unbuntu默认没有安装……)
 5#N是要求的天数 为了安全没有在shell参数中实现N的传递
 6#相关列表存放在 ~/list中
 7#鉴于一般不会出现带空格的文件名 没有考虑带空格的文件的删除 如果需要可以在 $filename两边加 " 实现吧
 8#AuXteN
 9today=$(date +%Y-%m-%d)
10N=3
11delist=~/list
12daysec=86400
13#ls -lu --time=atime --full-time|grep -e '^[^d]'| awk 'NF > 3 {print $9}'>$delist
14tree -if|grep '^\./> $delist
15for filename in $(cat $delist|awk '{print $1}')
16do
17echo "$filename"
18      last_access_time=$(stat $filename | tail -3 | grep Access | awk '{print $2}')
19      echo "$last_access_time"
20      today_s=$(date --date="$today" +%s)
21      echo "$today_s"
22      old_s=$(date --date="$last_access_time" +%s)
23      echo "$old_s"
24       ((interval_total_s=$today_s-$old_s))
25       echo "$interval_total_s".
26       interval_day=$(expr $interval_total_s / $daysec)
27      echo "$interval_day"
28      if [ $interval_day -gt $N ]
29      then
30      echo "delete $filename"|tee -$delist
31      #rm -I $filename
32      fi
33done
34
posted @ 2009-02-20 16:41  Auxten  阅读(339)  评论(0编辑  收藏  举报