delete files except most recent


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting delete files except most recent
# 1  
Old 06-21-2005
delete files except most recent

#!/bin/ksh -xvf

for arch_filename in `ls -lrt /u02/oracle/CMDR/archive | awk '{print $9}'`; do
echo "rm -rf /u02/oracle/CMDR/archive/"$arch_filename
rm -rf /u02/oracle/CMDR/archive/$arch_filename
done


I am running the above shell script every 10 minutes. I need to not delete the most recent file, but delete everything else. Each file is 500 mb. How would I do it. Basically when job kicks off, some files are getting deleted as it is writing the archive log and system is getting filled up and I cant see where the files are written to. I have to bounce the box to see the space. This is linux box.

Thanks, ST2000
# 2  
Old 06-21-2005
Code:
DIR=/u02/oracle/CMDR/archive

find $DIR -type f -maxdepth 1 -printf "%T@\t%p\n" | #list files with timestamps
sort -k1,1n | #sort oldest -> newest
cut -f2- | #remove timestamps
sed '$d' | #remove the last one (newest file)
tr '\n' '\0' | #delimit with NULs in case spaces in names
xargs -r0 rm -f

Also have a look at my newest script
# 3  
Old 06-21-2005
try ... (in ksh) ...
Code:
DIR=/u02/oracle/CMDR/archive

cd $DIR
lastfile=$(ls -rt | tail -1)
for afile in $(ls | grep -v $lastfile)
do
    echo > $afile
    rm -rf $afile
done

# 4  
Old 06-21-2005
Quote:
Originally Posted by Just Ice
try ... (in ksh) ...
Code:
DIR=/u02/oracle/CMDR/archive

cd $DIR
lastfile=$(ls -rt | tail -1)
for afile in $(ls | grep -v $lastfile)
do
    echo > $afile
    rm -rf $afile
done

Can you explain why you empty the file before deleting it? Is that faster?
# 5  
Old 06-21-2005
i've found that when the filesystem is short on space, rm will fail and/or take longer to complete --- emptying the file lets me get around the space issue ... yes, i think it is faster considering the alternatives ...
# 6  
Old 06-21-2005
Thanks for all the posts.

Each file is about 500mb. If the delete job kicks off and if there is a file written at that time, linux does not know what to do and locks that space off. Say 200 mb is written when delete kicks off, that 200mb is gone from archive filesystem and in a week's time it reduces to nothing and will not last even an hour. I have to bounce db to clear up pending archives. Instead i want a modification to my script to preserve the last file and delete all.

Anyway i modified the script adding a variable which greps for last file and delete using grep -v of that last file. It was just one more line to my existing script.

Thanks again
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Cron job that checks for new/recent files

I'm new to shell scripting, and I want to set up a cron job that scans the date/time stamp of all files in a directory, and then if any file is, say, less than 10 minutes old, I want it to execute a command on that file. What would be the best way to go about this? Thanks. Not sure if it makes a... (1 Reply)
Discussion started by: DavidHoffman
1 Replies

2. Shell Programming and Scripting

How to recursively copy directory only for recent files?

I love the -newerct flag for the Cygwin find command on windows. Can I use "/usr/bin/find . -newerct '3 hours ago'" to conditionally copy a directory tree so that only the files in the directory tree that are younger than 3 hours are copied to my destination directory such that the directory... (4 Replies)
Discussion started by: siegfried
4 Replies

3. Shell Programming and Scripting

How to rename (move) most recent files in directory?

I'm using cygwin32 on Windows. DN is an environment variable pointed at my download directory. This command works to move the single most recent file in my download directory to my current directory: mv "`perl -e '$p = $ARGV; opendir $h, $p or die "cannot opendir $p: $!"; @f = sort { -M $a... (2 Replies)
Discussion started by: siegfried
2 Replies

4. AIX

List only the recent log files

Hi Friends, I have a list of files in a directory as shown below. It is basically in this format-> yymmdd.hhmmss.filename.out I want to list the latest log of each file. ie. the lastest a.out, b.out, c.out, which means I am looking for only the below 3 files out of these 5 files: ... (3 Replies)
Discussion started by: sudvishw
3 Replies

5. Shell Programming and Scripting

Find most recent files in dirs and tar them up?

Hey all.. This should be simple but stoopid here can't get head around it! I have many directories, say 100 each with many files inside. I need a script to traverse through the dirs, find most recent file in each dir and add it to a tar file. I can find the files with something like for... (1 Reply)
Discussion started by: bobdung
1 Replies

6. UNIX for Advanced & Expert Users

Back up of recent modified files

Hi, I want to identify the files that are recently modified or with in a specified period (15 Days) in UNIX box. After identifying the files should be transferred to windows machine through FTP. The files should be overwritten in windows if it is already available. Please help... (1 Reply)
Discussion started by: lathish
1 Replies

7. UNIX for Dummies Questions & Answers

sort biggest most recent files

if i am in /tmp file, and i have a few DIRs under /tmp. i want to find the biggest and most recent files (from 7 days ago) in /tmp and subfolders. (3 Replies)
Discussion started by: tjmannonline
3 Replies

8. OS X (Apple)

How do you list the most recent files writen to a volume

Hi, I have a couple of xRaids and recently over night something happened on one of the volumes which maxed out all the disk space. What is the shell command to list the most recent files written to a volume as there are like millions of files on this share. I'm thinking along the lines of... (1 Reply)
Discussion started by: williamhsman
1 Replies

9. Shell Programming and Scripting

Get Files from ftp which are uploaded recent week

Hi All, Here is a brief scenario for my requirement .. There is a directory in FTP Server, where would files be uploaded on weekly basic. I need to get those files which are uploaded during this week and not the files which are uploaded the previous week and download them to locale... (1 Reply)
Discussion started by: narramadan
1 Replies

10. Shell Programming and Scripting

To keep only the most recent files

Hi all, I'm running on a Sun Solaris machine. I would only want to keep the last 2 most recent files on 1 of my directory. Below shows my script, but it is incomplete. For the ?? part I do not know how to continue. please help:confused: DIR=/tmp/abc OUTPUT=/tmp/output.out... (1 Reply)
Discussion started by: *Jess*
1 Replies
Login or Register to Ask a Question