?
Solved

Delete files older than

Posted on 2010-11-23
21
Medium Priority
?
750 Views
Last Modified: 2012-06-27
Running HP UX
I have backups going to a folder, and I want to be able to delete files/folders older than 7 days.

How can I accomplish this?
0
Comment
Question by:shankshank
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 8
  • 4
  • 3
  • +3
21 Comments
 
LVL 4

Expert Comment

by:zcrammond
ID: 34197210
script found elsewhere:

Dim Fso

Dim Directory

Dim Modified

Dim Files

Set Fso = CreateObject(“Scripting.FileSystemObject”)

Set Directory = Fso.GetFolder(“BACKUP DIRECTORY”)

Set Files = Directory.Files

For Each Modified in Files

If DateDiff(“D”, Modified.DateLastModified, Now) > # Then Modified.Delete

Next


Change BACKUP FILE's with path to the folder containing the files and then change # with a number of days you want kept

save file as a .VBS and execute using this command: cscript.exe filename.vbs
0
 
LVL 5

Author Comment

by:shankshank
ID: 34197327
No..

This is for UNIX not windows
0
 
LVL 4

Expert Comment

by:thunderhead
ID: 34197358
find . -mtime 7 -exec rm '{}' \;

Should do it.

* please test this in non-production before hand *
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 5

Author Comment

by:shankshank
ID: 34197363
Will  that delete folders too?
0
 
LVL 4

Expert Comment

by:thunderhead
ID: 34197376
Its not my code, so I have not tested it
0
 
LVL 9

Expert Comment

by:jeremycrussell
ID: 34197380
Depending on how the files are created or accessed you can use the 'find' command.

find /path/to/files -ctime -7 -delete

would delete files created more than 7 days ago.  However, you have to be careful using ctime, other options are mtime and atime.

A file could have a ctime of more than 7 days ago, but have been modified or accessed recently and show a newer timestamp in ls.

I would suggest you "man find" and research ctime, mtime and atime before you start to delete.

One way to check things before you delete them is to run

find /path/to/files -ctime -7 -exec ls -al {} \;

And this will list the files that would be deleted with the other command, and you can see if this works as you would expect it.
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 34197401
To answer the question "Will  that delete folders too?"

Yes it will! To avoid this add "-type f" to the find command:

find /path/to/files -type f ... ...

wmp
0
 
LVL 9

Expert Comment

by:jeremycrussell
ID: 34197411
To restrict find to just files add the -type f option to find.
0
 
LVL 5

Author Comment

by:shankshank
ID: 34197452
is it -ctime +7 or -7

i thought i had to use-
0
 
LVL 9

Expert Comment

by:jeremycrussell
ID: 34197508
-[acm]time 7 would be files just 7 days ago.
-[acm]time +7 would be all files 7 days or older.
-[acm]time -7  would be all files in last 7 days.
0
 
LVL 5

Author Comment

by:shankshank
ID: 34197510
jeremy your check command gives phony output
0
 
LVL 5

Author Comment

by:shankshank
ID: 34197513
by phony i mean it doesnt list what must be deleted. haha
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 34197523
Use only -ls instead of -exec ls ... ...\;
0
 
LVL 5

Author Comment

by:shankshank
ID: 34197531
I want to list files 5 days or older

So this?

find /BACKUPHD -ctime +5

0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 34197542
Yep. Add -ls for an "ls -l" like output.
0
 
LVL 5

Author Comment

by:shankshank
ID: 34197552
/BACKUPHD>find /BACKUPHD -ctime +5 -ls
find: bad option -ls
0
 
LVL 4

Expert Comment

by:pablomorales
ID: 34197586
I use mtime in my scripts with good results. Use the following to check which files will be deleted (replace /path/to/files with the path of the directory you want to clean) :

find /path/to/files -mtime -7 -print
or for only files use:
find /path/to/files -mtime -7 -type f -print

To actually delete them use:

find /path/to/files -ctime -7 -exec rm -rf {} \;
or to delete only files use:
find /path/to/files -ctime -7 -type f -exec rm -rf {} \;

cheers!
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 34197589
Seems that HPUX's find doesn't know -ls. Sorry.
0
 
LVL 4

Expert Comment

by:pablomorales
ID: 34197617
If you want 5 days or older use to check:

find /path/to/files -mtime +5 -print
or for only files use:
find /path/to/files -mtime +5 -type f -print

To actually delete them use:

find /path/to/files -ctime +5 -exec rm -rf {} \;
or to delete only files use:
find /path/to/files -ctime +5 -type f -exec rm -rf {} \;
0
 
LVL 4

Accepted Solution

by:
pablomorales earned 2000 total points
ID: 34197644
Ooops. I meant:

find /path/to/files -mtime +5 -print
or for only files use:
find /path/to/files -mtime +5 -type f -print

To actually delete them use:

find /path/to/files -mtime +5 -exec rm -rf {} \;
or to delete only files use:
find /path/to/files -mtime +5 -type f -exec rm -f {} \;
0
 
LVL 5

Author Comment

by:shankshank
ID: 34304578
okay i wil l ry this
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In tuning file systems on the Solaris Operating System, changing some parameters of a file system usually destroys the data on it. For instance, changing the cache segment block size in the volume of a T3 requires that you delete the existing volu…
Java performance on Solaris - Managing CPUs There are various resource controls in operating system which directly/indirectly influence the performance of application. one of the most important resource controls is "CPU".   In a multithreaded…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
Suggested Courses

719 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question