免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: guorui913
打印 上一主题 下一主题

如何保留指定目录中最新的文件?[已解决] [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-02-17 16:02 |只看该作者

回复 #20 ly5066113 的帖子

用read ,厉害

论坛徽章:
0
22 [报告]
发表于 2009-02-17 16:07 |只看该作者
ls url | sort | awk 'NR>3{print}' | xargs rm -rf

论坛徽章:
0
23 [报告]
发表于 2009-02-17 16:08 |只看该作者
原帖由 ly5066113 于 2009-2-17 15:58 发表
ls -t | tee /dev/tty


会出现奇怪的现象,我这里本来有5个文件和一个文件夹,但是显示了11行,中间出现了文件名错位的情况

整句执行没有问题,Tim兄能解释一下么?谢谢

另外,如果使用ll -t开头时,后面的rm就不能执行了

刚看了另一个帖子,$NF可以表示最后一列,那么如何用在本例中呢?

[ 本帖最后由 guorui913 于 2009-2-17 16:45 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
24 [报告]
发表于 2009-02-17 16:15 |只看该作者

回复 #23 guorui913 的帖子

你的环境不同,tee /dev/tty 不知道是个什么效果。
其实我到现在都还不知道你到底要干什么。

比如我保留NBA目录中最新的3个文件(即按照修改时间保留最新的),文件名已经按照日期命名

按照修改时间保留最新的 和 按照日期命名 这2个本身就是矛盾的,日期最大的完全有可能修改时间是最早的。

论坛徽章:
0
25 [报告]
发表于 2009-02-17 16:19 |只看该作者

回复 #20 ly5066113 的帖子

还是会有问题,出现第一条删除提示后直接退出了

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
26 [报告]
发表于 2009-02-17 16:22 |只看该作者

回复 #25 ywlscpl 的帖子

具体我没有测试,如果while不行,那改成for试试:

for file in $(ls -t NBA* | tee /dev/tty | awk 'NR>3')

论坛徽章:
0
27 [报告]
发表于 2009-02-17 16:28 |只看该作者

回复 #26 ly5066113 的帖子

恩。改成for语句可以了,大概是因为read用到了标准输入跟/dev/tty冲突了吧

论坛徽章:
0
28 [报告]
发表于 2009-02-17 16:30 |只看该作者
原帖由 ly5066113 于 2009-2-17 16:15 发表
你的环境不同,tee /dev/tty 不知道是个什么效果。
其实我到现在都还不知道你到底要干什么。

比如我保留NBA目录中最新的3个文件(即按照修改时间保留最新的),文件名已经按照日期命名

按照修改时间保留 ...

只是提供了一个可能有用的信息,当我做备份的时候把日期戳加进去了,因为没有想到好的方法能把最新的文件挑出来,所以给了无用的信息,不好意思啊

这段shell的目的是我在备份前能列出已有的备份文件,并且删除旧的版本,只保留最新的N份。删除的时候要求用户确认。

[ 本帖最后由 guorui913 于 2009-2-17 16:34 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
29 [报告]
发表于 2009-02-17 16:31 |只看该作者

回复 #27 ywlscpl 的帖子

不是,原因应该是rm -i被放到了subshell中。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
30 [报告]
发表于 2009-02-17 16:33 |只看该作者

回复 #28 guorui913 的帖子

就是说,还应该按照文件名中的日期来判断,那么 ls -t 的方法就不要用了。

for file in $(ls NBA* | sed -n '1N;N;$!{P;D}')
do
        \rm -i $file
done
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP