当前位置:  开发笔记 > 编程语言 > 正文

在bash中使用'rm'的'按日期删除'有什么简单的方法吗?

如何解决《在bash中使用'rm'的'按日期删除'有什么简单的方法吗?》经验,为你挑选了2个好方法。

我注意到今天(经过大约8年的愉快地抨击bash之后),使用'rm'进行"按日期删除"没有任何简单的方法.因此,解决方案是围绕诸如rm,ls,find,awk和sed之类的命令组合管道.

比方说,我想从2009年删除工作目录中的每个文件,这是什么典型方法?

我提出了以下内容,这是非常丑陋的,只有在'rm'设置为跳过目录时才会运行(否则您将删除父目录):

ls -la | awk '{if (substr($6,0,5)==2009) print $8}' | xargs rm

指向最优雅和最令人难以置信的过度设计解决方案.



1> flolo..:

我会结合find和rm(没有管道)

find .  ...bunch of find criterias to select certain files (e.g. by date) .... -exec rm \{\} \;

编辑:有你的例子的参数,它将是

find . -maxdepth 1 -type f -ctime -12 -exec rm \{\} \;

CAVEAT:这只适用于今天:-).(要使其每次都有效,请将-ctime替换为absoulte时间,请参阅联机帮助页中的timeXY)



2> Paul Dixon..:

某些版本的find支持-delete选项,使其更加高效......

find . -maxdepth 1 -type f -ctime -12 -delete;

检查你的查找手册页(这对我来说最近发布的Ubuntu版本)

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有