As you might already know, we use the rm command in Linux to delete files and folders. The filenames to be deleted have to be passed as arguments to rm. However, rm does not offer other options by itself, like deleting files based on timestamps.
That’s the reason, we use the find command in Linux, which is used to search for files and folders based on different parameters. It is a complex command which can be used to search with parameters like the filename, size, type of file, etc.
There is an option in the find command to search for files based on how old they are and today we will see how to use find and rm together to delete files older than the specified number of days.
Find Files Older Than N Days
We use the argument '-atime'
of find command to find files older than N days, i.e. last accessed before at least N days.
$ find <directory_path> -atime +<N> $ find . -atime +3
There are two files in the current which were last accessed at least 4 days ago. Let us use the ‘stat‘ command to verify this:
$ stat tmp2 tmp3
As you can see, the files are 4 and 5 days old respectively. Note that the program ignores any fraction part of the timestamp when calculating how old a file is; hence, for example, when files older than 4 days or more are to be specified, we specify +3
.
Delete Files Older Than N Days
Finally, let’s call the rm command with the argument '-exec'
to delete these files.
$ find . -atime +3 -exec rm {} \;
Thus the two files ‘tmp2’ and ‘tmp3’ were deleted.
Conclusion
In this article, we have seen how to delete files older than a specified number of days in Linux. As you might know, in Linux (and Unix) file systems, the creation time of a file is not maintained. The three timestamps maintained for a file are; its last access time, last modification time, and its last status change time.
Here we have considered the last access time for searching the files. Users can choose to go for the modification or status change time too: simply use the options '-mtime'
or '-ctime'
respectively, instead of '-atime'
, and the rest of the syntax remains the same.
Thank you for reading! Let us know your thoughts in the comments below!