Deleting files over 7 days old


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Deleting files over 7 days old
# 1  
Old 10-08-2003
Deleting files over 7 days old

Simple question I am sure - but one that I dont know the answer to nevertheless..


I have a directory that I store log files in - but I wish to run a daily script in cron to delete all files in this directory that have not been modified within the last 7 days...

Can anyone help me?
# 2  
Old 10-08-2003
hiho,
to remove all files in the directory that have not been accessed for a week:

# find $DIR -atime +7 -exec rm {} \;

greetings Preßy
# 3  
Old 10-09-2003
pressy's answer is correct. But if you anticipate having a lot of files to delete, you'll save time by piping the output of find to rm via xargs, thus:
Code:
find $DIR -atime +7 -print | xargs rm

(The "-print" argument may not be necessary if your version of find is relatively modern.)
# 4  
Old 10-21-2003
be on the safer side.

find $DIR -type f -atime +7 -exec rm -f {} \; -print

the -type f insures that you only delete files. nothing else. and the -print is in for good mesure so you can see what is being delted if you want to keep a log of that and what not or you just want to tripple verify you didnt delete the wrong stuff.
# 5  
Old 10-21-2003
Quote:
Originally posted by Optimus_P
be on the safer side.

find $DIR -type f -atime +7 -exec rm -f {} \; -print

the -type f insures that you only delete files. nothing else. and the -print is in for good mesure so you can see what is being delted if you want to keep a log of that and what not or you just want to tripple verify you didnt delete the wrong stuff.
Good idea to print what is being deleted, however, since the command is being run via cron, I doubt the user will be there to see it! Better to redirect the output to a log (though this will cause another log that will need trimming Smilie )
# 6  
Old 10-21-2003
email the output to yourself. i do this all the time to keep records.
# 7  
Old 10-21-2003
But if your filenames might have spaces ...

If your filenames might have spaces, I think this is the best solution:
Code:
find $DIR -type f -atime +7 -print | while read x; do
    echo "$x"
    rm "$x"
done

If you're running this as a cron job (or as part of one) the 'echo "$x"' will cause the list of deleted files to be mailed to you.

Of course, this version negates the large-number-of-files advantage of my previous version. Hmmm ... does Optimus_P's solution get rid of the need for the while loop when filenames may have spaces? Is it necessary to put quotes around {} in a find command to preserve spaces if, for instance, some file name has two consecutive spaces in it?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Script for Deleting files older than 14 days automatically

we need to have periodic clean up implemented in our sap directory \\sapds\PR1\int\scm\snp\outbound\snapshot. which needs unix script for Deleting files older than 14 days automatically in sap system unix os. (1 Reply)
Discussion started by: kvkreddy_b2w
1 Replies

2. AIX

Deleting files older than 14 days automatically

Hi In my aix server under the location "/usr/sap/SAPXI/extract", I have a lot of log files. I need a script which is to be added in crontab so that the files and directories older than 14 days should get deleted automatically from the location "/usr/sap/SAPXI/extract". Please advise me.... (3 Replies)
Discussion started by: samsungsamsung
3 Replies

3. Shell Programming and Scripting

deleting files older than 7 days

Hi Guys, I am new to unix I am looking for a script to delete files older than 7 days but i also want to exclude certain directories (like arch,log .....) and also some files with extensions ( like .ksh, .ch, ..............) Thanks (1 Reply)
Discussion started by: MAYAMAYA0451
1 Replies

4. UNIX for Dummies Questions & Answers

Deleting specfic files older than N days

Hello, I am trying to delete specific files older than 7 days that start with FSTRnnnn (nnnn=sequnce number) from /home/users/userdir I.E cd home/users/userdir ll FSTR0001 Jul 8 14:20 FSTR0002 Jul 6 12:01 FSTR0003 May 25 09:45 FSTR0004 April 2 17:20 MSTR0034 Jul 6 12:45... (3 Replies)
Discussion started by: eurouno
3 Replies

5. Shell Programming and Scripting

Deleting files older than 7 days

Hi Guys, I want to delete folder/files older than 7 days. Im using the command below. find /test/test1 -mtime +7 -print0 | xargs -0 rm -Rf /test/test1/* which works ok, but it deletes the test1 folder as well which i dont want. The test1 folder will have a list of sub-folders which in... (4 Replies)
Discussion started by: shezam
4 Replies

6. Shell Programming and Scripting

Script for deleting 30 days older

Hi, I need a script to delete files that are 30 days older and also the file name should contain aa or ab or ac as substring... Regards, Dolly.... (3 Replies)
Discussion started by: moon_friend
3 Replies

7. Shell Programming and Scripting

Deleting / finding files older than X days missess a day

Hi When trying to find and delete files which are, say, 1 day, the find command misses a day. Please refer the following example. xxxd$ find . -type f -ctime +1 -exec ls -ltr {} \; total 64 -rw-rw-r-- 1 oracle xxxd 81 Apr 30 11:25 ./ful_cfg_tmp_20080429_7.dat -rw-rw-r-- 1... (4 Replies)
Discussion started by: guruparan18
4 Replies

8. UNIX for Dummies Questions & Answers

Deleting certain files over 30 days old

Hi, I must confess i have a very basic knowledge of UNIX and its commands, but i was hoping someone would be able to help answer my query. Once a month as part of a team we have to perform housekeeping on our UNIX directories, we remove certain files older than 30 days and compress the... (3 Replies)
Discussion started by: swellybro
3 Replies

9. Shell Programming and Scripting

Deleting specific files greater then 90 days

I have a directory that contains a number of history files for a process. Every file starts with the string "EVACK". FOr example EVACK0101.000001 EVACK0102.095940 EVACKmmdd.hhmiss I want to erase in the specific directory ONLY(no sub-directories) all EVACK files older then 90 days. I... (2 Replies)
Discussion started by: beilstwh
2 Replies

10. UNIX for Dummies Questions & Answers

Deleting files created before two days ago

Dear All: I want to build a shell that delete files created two or more days ago ... I think it could be built using a special command with ls or grep, I'd apreciate any help from you guys I have a lot of log files from november, december, january and this tool will help me a lot The files... (3 Replies)
Discussion started by: josecollantes
3 Replies
Login or Register to Ask a Question