Link to home
Start Free TrialLog in
Avatar of shankshank
shankshank

asked on

Delete files older than

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?
Avatar of zcrammond
zcrammond
Flag of United Kingdom of Great Britain and Northern Ireland image

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
Avatar of shankshank
shankshank

ASKER

No..

This is for UNIX not windows
find . -mtime 7 -exec rm '{}' \;

Should do it.

* please test this in non-production before hand *
Will  that delete folders too?
Its not my code, so I have not tested it
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.
Avatar of woolmilkporc
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
To restrict find to just files add the -type f option to find.
is it -ctime +7 or -7

i thought i had to use-
-[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.
jeremy your check command gives phony output
by phony i mean it doesnt list what must be deleted. haha
Use only -ls instead of -exec ls ... ...\;
I want to list files 5 days or older

So this?

find /BACKUPHD -ctime +5

Yep. Add -ls for an "ls -l" like output.
/BACKUPHD>find /BACKUPHD -ctime +5 -ls
find: bad option -ls
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!
Seems that HPUX's find doesn't know -ls. Sorry.
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 {} \;
ASKER CERTIFIED SOLUTION
Avatar of pablomorales
pablomorales
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
okay i wil l ry this