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.
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.
This works for me:
find /path ! -newermt "YYYY-MM-DD HH:MM:SS" | xargs rm -rf
find ~ -type f ! -atime 4|xargs ls -lrt
This will list files accessed older than 4 days, searching from home directory.
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
来源:https://stackoverflow.com/questions/33091013/delete-files-older-than-specific-date-in-linux