Chinaunix
标题:
删除指定时间72小时之前的的数据(不是基于当前系统时间)
[打印本页]
作者:
791605975
时间:
2015-04-16 15:08
标题:
删除指定时间72小时之前的的数据(不是基于当前系统时间)
请问各位大大,我想查找并选中某个特定时间之前的72小时文件数据,并将剩余的文件全部删除采用什么方法呢。还有特定时间是根据当前目录下最新产生的文件名(时间戳)(不是当前系统时间)
1111.png
(26.17 KB, 下载次数: 50)
下载附件
文件格式
2015-04-16 15:01 上传
ls -l|tail +1|awk '{print $9}'
复制代码
150330,085306,M6,SN7654321.wav
复制代码
我选中了最后一个数据的最后的时间格式,怎样转换计算72小时之前的那个时间点,并且选中这两个时间点中间的文件并删除其他文件呢
作者:
cao627
时间:
2015-04-16 22:10
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
/tmp/test$ touch -t 201505170100.10 a
/tmp/test$ touch -t 201505160100.10 b
/tmp/test$ touch -t 201505150100.10 c
/tmp/test$ touch -t 201505140100.10 d
/tmp/test$ touch -t 201505140059.10 e
/tmp/test$ ls --full-time
total 0
-rw-rw-r-- 1 czj czj 0 2015-05-17 01:00:10.000000000 +0800 a
-rw-rw-r-- 1 czj czj 0 2015-05-16 01:00:10.000000000 +0800 b
-rw-rw-r-- 1 czj czj 0 2015-05-15 01:00:10.000000000 +0800 c
-rw-rw-r-- 1 czj czj 0 2015-05-14 01:00:10.000000000 +0800 d
-rw-rw-r-- 1 czj czj 0 2015-05-14 00:59:10.000000000 +0800 e
/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}'
a
b
c
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
ls -l *.wav|tail +1|echo `awk '{print $9}'`|sed 's/,/ /g'|awk '{print $1$2}'|awk '{print substr($0,1,12)}'
复制代码
150330085306
复制代码
我提取了当前目录下最后生成的文件时间,算72小时之前那个点存在问题。
date -d "2015-04-20 00:00:00" +%s
复制代码
这个支持。
下面这个不支持了
date -d @1287331200 "+%Y%m%d"
复制代码
date: invalid date '@1287331200'
复制代码
我再想想
作者:
bikkuri
时间:
2015-04-20 12:23
本帖最后由 bikkuri 于 2015-04-20 12:23 编辑
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