Delete files older than specific date in linux

心不动则不痛 提交于 2019-11-27 15:41:14

问题


I used the below command to delete files older than a year.

  find /path/* -mtime +365 -exec rm -rf {} \;

But, now I want to delete all files whose modified time is older than 01 Jan 2014

How do I do it in linux.


回答1:


You can touch your timestamp as a file and use that as a reference point:

e.g. for 01-Jan-2014:

touch -t 201401010000 /tmp/2014-Jan-01-0000

find /path -type f ! -newer /tmp/2014-Jan-01-0000 | xargs rm -rf 

this works because find has a -newer switch that we're using.

From man find:

-newer file
       File  was  modified  more  recently than file.  If file is a symbolic
       link and the -H option or the -L option is in effect, the modification time of the 
       file it points to is always used.



回答2:


This works for me:

find /path ! -newermt "YYYY-MM-DD HH:MM:SS" | xargs rm -rf



回答3:


The accepted answer pollutes the file system and find itself offers delete. so we don't have to pipe the results to xargs and then issue an rm . This answer is more efficient

find /path -type f -not -newermt "YYYY:MM:DD HH:MI:SS" -delete



回答4:


find ~ -type f ! -atime 4|xargs ls -lrt

This will list files accessed older than 4 days, searching from home directory.



来源:https://stackoverflow.com/questions/33091013/delete-files-older-than-specific-date-in-linux

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!