问题
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