Chinaunix

标题: 删除指定时间72小时之前的的数据(不是基于当前系统时间) [打印本页]

作者: 791605975    时间: 2015-04-16 15:08
标题: 删除指定时间72小时之前的的数据(不是基于当前系统时间)
        请问各位大大,我想查找并选中某个特定时间之前的72小时文件数据,并将剩余的文件全部删除采用什么方法呢。还有特定时间是根据当前目录下最新产生的文件名(时间戳)(不是当前系统时间)




  1. ls -l|tail +1|awk '{print $9}'
复制代码
  1. 150330,085306,M6,SN7654321.wav
复制代码


我选中了最后一个数据的最后的时间格式,怎样转换计算72小时之前的那个时间点,并且选中这两个时间点中间的文件并删除其他文件呢

作者: cao627    时间: 2015-04-16 22:10
  1. ls --full-time -t | awk 'NR==2{gsub(/-/," ",$6);gsub(/:/," ",$7);a=$6" "$7}NR>=2{gsub(/-/," ",$6);gsub(/:/," ",$7);b=$6" "$7;c=mktime(a)-mktime(b);if(c<=60*60*72)print $NF}'
复制代码

作者: 791605975    时间: 2015-04-17 13:23
这个不可行,我表达的也不行,我自己慢慢写吧回复 2# cao627


   
作者: 聆雨淋夜    时间: 2015-04-17 16:03
写出来没有,比如说仅想保留3天前  再之前72小时的数据
试试这样行不行
find ./ -mtime -3 -o -mtime +6 |grep -v './'
作者: cao627    时间: 2015-04-17 20:12
回复 3# 791605975
  1. /tmp/test$ touch -t 201505170100.10 a  
  2. /tmp/test$ touch -t 201505160100.10 b  
  3. /tmp/test$ touch -t 201505150100.10 c  
  4. /tmp/test$ touch -t 201505140100.10 d
  5. /tmp/test$ touch -t 201505140059.10 e
  6. /tmp/test$ ls --full-time
  7. total 0
  8. -rw-rw-r-- 1 czj czj 0 2015-05-17 01:00:10.000000000 +0800 a
  9. -rw-rw-r-- 1 czj czj 0 2015-05-16 01:00:10.000000000 +0800 b
  10. -rw-rw-r-- 1 czj czj 0 2015-05-15 01:00:10.000000000 +0800 c
  11. -rw-rw-r-- 1 czj czj 0 2015-05-14 01:00:10.000000000 +0800 d
  12. -rw-rw-r-- 1 czj czj 0 2015-05-14 00:59:10.000000000 +0800 e
  13. /tmp/test$ ls --full-time -t | awk 'NR==2{gsub(/-/," ",$6);gsub(/:/," ",$7);a=$6" "$7}NR>=2{gsub(/-/," ",$6);gsub(/:/," ",$7);b=$6" "$7;c=mktime(a)-mktime(b);if(c<=60*60*72)print $NF}'
  14. a
  15. b
  16. c
  17. d
复制代码

作者: 791605975    时间: 2015-04-20 08:58
是嵌入式arm,busybox做的shell,好多命令不支持。。。回复 5# cao627


   
作者: 791605975    时间: 2015-04-20 09:14
我表达的有误,其实是目录下最后生成的文件的时间为起点,向过去推72小时,这段时间的数据都保留,更早的就删除,arm板的shell,限制比较多。。。回复 4# 聆雨淋夜


   
作者: 791605975    时间: 2015-04-20 09:28
  1. ls -l *.wav|tail +1|echo `awk '{print $9}'`|sed 's/,/ /g'|awk '{print $1$2}'|awk '{print substr($0,1,12)}'
复制代码
  1. 150330085306
复制代码
我提取了当前目录下最后生成的文件时间,算72小时之前那个点存在问题。
  1. date -d "2015-04-20 00:00:00" +%s
复制代码
这个支持。

下面这个不支持了
  1. date -d @1287331200  "+%Y%m%d"
复制代码
  1. date: invalid date '@1287331200'
复制代码
我再想想
作者: bikkuri    时间: 2015-04-20 12:23
本帖最后由 bikkuri 于 2015-04-20 12:23 编辑
  1. eval "$(ls -l --time-style=+%s|awk '{if(max<$6)max=$6;file[$6]=$7}END{for (time in file){if(max-time>72*60*60)print "rm -f "file[time]}}')"
复制代码

作者: 791605975    时间: 2015-04-21 14:06
大概明白思路,取出时间戳做差,大于72*60*60秒的文件删除回复 9# bikkuri


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2