我注意到今天(经过大约8年的愉快地抨击bash之后),使用'rm'进行"按日期删除"没有任何简单的方法.因此,解决方案是围绕诸如rm,ls,find,awk和sed之类的命令组合管道.
比方说,我想从2009年删除工作目录中的每个文件,这是什么典型方法?
我提出了以下内容,这是非常丑陋的,只有在'rm'设置为跳过目录时才会运行(否则您将删除父目录):
ls -la | awk '{if (substr($6,0,5)==2009) print $8}' | xargs rm
指向最优雅和最令人难以置信的过度设计解决方案.
我会结合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)
某些版本的find支持-delete选项,使其更加高效......
find . -maxdepth 1 -type f -ctime -12 -delete;
检查你的查找手册页(这对我来说最近发布的Ubuntu版本)