Sponsored Content
Top Forums Shell Programming and Scripting Remove lines older than 30 days Post 302883351 by in2nix4life on Monday 13th of January 2014 11:55:32 AM
Old 01-13-2014
I wrote and tested this on a AIX 6.1 box and it works, however you need to have Perl installed. Hope this helps.

Code:
#!/usr/bin/ksh
#
# -- script to remove lines from a file
# -- older than the given number of days
# -- based on the date in column 1
#

# check command line for given number of days
if [ $# -ne 2 ]
then
    echo "Usage: $0 </path/to/file> <number of days>"
    exit 1
fi

# store file and number of days
f=$1
d=$2

# get the current date in seconds past epoch
c=$(date +%s)

# new file
n="$f.new"

# read file line by line, convert the date in
# column one to seconds pase epoch and check if
# older than the given number of days
while read line
do
    c1=$(echo $line | awk '{print $1}')
    f1=$(echo "$c1" | awk '{gsub(/-/," ",$0)}{print $3" "$2" "$1}')
    secs=$(perl -e 'use Time::Local; print timelocal(0,0,0,$ARGV[2], $ARGV[1]-1, $ARGV[0]);' $f1)
    dif=$(echo "scale=0; ($c - $secs) / (24*3600)" | bc)
    if [ $dif -le $d ]
    then
        echo $line >> $n
    fi
done < $f

# remove backup original file and rename new file
mv $f $f.ORIG
mv $n $f
cat $f

# done
exit 0

./remoldlines.ksh
Usage: ./remoldlines.ksh </path/to/file> <number of days>

./remOldLines.ksh /tmp/file.txt 30
15-12-2013 10:00:00 PM|Line test 7891234
10-01-2014 03:00:00 PM|Line test 8901234

da3fb00cca3575cbce2516f73a486294
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Find files older than 5 days and remove tem after listing

need help with this ... Find files older than 5 days and remove tem after listing list "test" file older than 5 days and then remove them (1 Reply)
Discussion started by: ypatel6871
1 Replies

2. Shell Programming and Scripting

Need to remove files older than 30 days except directories

Hi, I need to remove files (*.trc) which are older than 30 days from one location. My problem is there I do not want to visit any of the directories at that location. I want to search files at that particular location only (need to skip directorys at that location). maxdepth option is there... (6 Replies)
Discussion started by: malaymaru
6 Replies

3. Shell Programming and Scripting

How to tar, compress and remove files older than two days

Hi, I'm Eddy from Belgium and I've the following problem. I try to write a ksh script in AIX to tar, compress and remove the original *.wav files from the directory belgacom_sf_messages older than two days with the following commands. The problem is that I do not find a good combination... (4 Replies)
Discussion started by: edr
4 Replies

4. Shell Programming and Scripting

script to remove files older than 60 days

Hi I need help in the script which looks at a contorl file which has a list of file names like xxxx.12345 and I want to take only xxxxx and search in a specific directory and remove the file if its older than 60 days I have written something like this.. but seems to be wrong... (1 Reply)
Discussion started by: antointoronto
1 Replies

5. UNIX for Advanced & Expert Users

How to Remove 180 days older non-empty directories

Hi Gurus, I have command to delete more than 180days file. find /home/abc/ -name "CBST_*.txt*" -mtime +180 | xargs -n 100 rm -f Now I would like to delete more than 180days Non empty directory--What will be command? Following is non empty directory as instance CBST2010* (2 Replies)
Discussion started by: thepurple
2 Replies

6. Shell Programming and Scripting

[Solved] Remove file older than 90 days

I have crontab job a tar file to a directory ( tar -cvf /tmp/backup/or.`date +%m%d%y`. /ora/db/* ) , it will do it every day . Now I don't want to keep too much files , I just want to keep the file for 90 days , can advise if I want to remove the backup file which are elder than 90 days , can... (1 Reply)
Discussion started by: ust3
1 Replies

7. Shell Programming and Scripting

Remove files older than 2 days.

Hi All, I am new to the scripting and using solaris 10 OS. Please suggest me from the below script which modifications need to be done to delete the files more that 2days older. Current script is deleting existing file. # Remove old explorer runs if needed DIR=`dirname ${EXP_TARGET}` if ... (2 Replies)
Discussion started by: Navkreddy
2 Replies

8. Shell Programming and Scripting

Search 2 days older file and then delete last 10 lines

I want to search 2 day older file and then delete last 10 line of that file. (2 Replies)
Discussion started by: sonu pandey
2 Replies

9. Shell Programming and Scripting

Shellscript command to remove files starting with a certain string, and older than 3 days

Hi All, Need help in identifying a shellscript command to remove all files on a server directory, starting with a certain prefix and also older than 3 days. That means files created with that prefix, today or yesterday, shouldn't be removed. Thanks, Dev (3 Replies)
Discussion started by: dev.devil.1983
3 Replies

10. Shell Programming and Scripting

Filtering log file with lines older than 10 days.

Hi, I am trying to compare epoch time in a huge log file (2 million lines) with todays date. I have to create two files one which has lines older than 10 days and another file with less than 10 days. I am using while do but it takes forever to complete the script. It would be helpful if you can... (12 Replies)
Discussion started by: shunya
12 Replies
CYR_EXPIRE(8)						      System Manager's Manual						     CYR_EXPIRE(8)

 *

NAME
cyr_expire - expire messages and duplicate delivery database entries SYNOPSIS
cyr_expire [ -C config-file ] [ -D delete-days ] -E expire-days [ -X expunge-days ] [ -p mailbox-prefix ] [ -v ] DESCRIPTION
Cyr_expire is used to expire messages and duplicate delivery database entries. Cyr_expire also cleanses mailboxes of partially expunged messages (when using the "delayed" expunge mode). The expiration of messages is controlled by the /vendor/cmu/cyrus-imapd/expire mailbox annotation which specifies the age (in days) of messages in the given mailbox that should be deleted. Any duplicate delivery database entries which correspond to the mailbox are also deleted at the same frequency. The value of the /vendor/cmu/cyrus-imapd/expire annotation is inherited by all children of the given mailbox, so an entire mailbox tree can be expired by seting a single annotation on the root of that tree. If a mailbox does not have a /vendor/cmu/cyrus-imapd/expire annotation set on it (or does not inherit one), then no messages are expired from the mailbox. Cyr_expire reads its configuration options out of the imapd.conf(5) file unless specified otherwise by -C. OPTIONS
-C config-file Read configuration options from config-file. -D delete-days Remove previously deleted mailboxes older than delete-days (when using the "delayed" delete mode). -E expire-days Prune the duplicate database of entries older than expire-days. This value is only used for entries which do not have a correspond- ing /vendor/cmu/cyrus-imapd/expire mailbox annotation. -X expunge-days Expunge previously deleted messages older than expunge-days (when using the "delayed" expunge mode). -x Do not expunge messages even if using delayed expunge mode (reduces the IO hit considerably, allowing you to run cyr_expire fre- quently to clean up the duplicate database without overloading your server) -p mailbox-prefix Only find mailboxes starting with this prefix. e.g. "user.justgotspammedlots" -v Enable verbose output. -a Skip the annotation lookup, so all /vendor/cmu/cyrus-imapd/expire annotations are ignored entirely. It behaves as if they were not set, so only expire-days is considered for all mailboxes. FILES
/etc/imapd.conf SEE ALSO
imapd.conf(5), master(8) CMU
Project Cyrus CYR_EXPIRE(8)
All times are GMT -4. The time now is 12:14 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy