HOW TO REMOVE OLD FILES FROM A DIRECTORY IN UNIX
This is a typical which may occur.Say you have a lot of old dump files of manyyy months.And you are worried about space.So obviously you will try to remove files from that directory.But its also cumbersome to do a rm -f and keep on ticking the keyboard.We can solve it using find utility in UNIX.The format of the command may be like :
find . -name "*.gz" -print -mtime +30 -exec rm {} \+
or
find . -name "*.gz" -print -mtime +30 -exec rm {} \;
or
find . -name "*.gz" -print -mtime +30 -ok rm {} \;
Lets dissect the above command--
The three commands telling that remove all gunzipped files which has not been modified for last one month.
-name is matching all the files having *.gz.
-print is printing the whole path of the file.
-mtime +30 means modified before 30 days.
-atime +30 means accessed before 30 days.
If we would like to remove all .zip files also alongwith .gz which has not been accessed for last one month then?
find . / \( -name "*.gz" -o -name '*.zip' \) -atime +30 -exec rm {} \;
Whats the difference between + or ; putting after the command?
Actually + collects all the files to be tremoved,create a set of commands, and then execute.So its much faster.
Why you used OK in place of exec ?
Its just to make familiar with the expression.What OK will do is to confirm from the user whether he wants to delete or not.But surely thats a bad idea as this will be against our intention.
Wats that {} after rm?
This is just for passing arguments to rm.
Labels: Technical_HowTo_Unix