01-14-2010
find command with complex logic
I'm looking to write a script that will do a find of directories and delete them if they are older than x days but keep the last x # of folders even if they are older than x days.
The usage is for a deployment location, so we want to keep the location clean but retain maybe the last 2 builds that have been deployed from a given folder. If there have been multiple builds in the last couple of days then we might want to keep more than 2 builds.
So the first criteria is keep a minimum of x builds.
The 2nd criteria is if they are less than 2 days old, keep more builds.
So I'm thinking I have to write something that does an ls -al, dumps to a temp file, removes the last 2 lines in that file or more lines if they are less than 2 days old and then uses that file to delete the folders.
I know the logic to do the find by date and delete, but I need to add the logic of keeping the last x builds to it. I'm just wondering about the best way to do this. Has anyone done something similar or have some suggestions?
8 More Discussions You Might Find Interesting
1. Answers to Frequently Asked Questions
Perhaps the number one advanced find question is:
How to stop find from descending into subdirectories?
find command
Performing a non-recursive find in Unix
Use -prune with find command on AIX
Searching for files over 30 days old in current directory
disk space used for files with in a... (0 Replies)
Discussion started by: Perderabo
0 Replies
2. Shell Programming and Scripting
Haven't worked in bash for ages. did a good bit of shell scripting in regular sh, but have forgotten most of it.
I have several thousand php files that now include the following line at the end of the file. There is no LF or CR/LF before it begins, it is just concatenated to the final line of... (3 Replies)
Discussion started by: sjburden
3 Replies
3. Shell Programming and Scripting
How to I put my find command string into a script. It is currently to long to be entered manually at command line.
for FNAME in `find /unixsxxx/interface/x.x/xxxxxx -type f \( -name '*.KSH' -o -name '*.sh' -o -name '*.sql' -o -name '*.ksh' \) -exec grep -il xxx.xxx.xxx.xxx {} \;`; do C=`grep -c... (5 Replies)
Discussion started by: TimHortons
5 Replies
4. Shell Programming and Scripting
help pls...
i would like to change this
CURVE2 565489 789458 1258649
random data here...
CURVE2 565489 568795 6548921
random data here...
CURVE2 565489 123598 6446259
random data here...
CURVE2 565489 672956 2489657
into this
CURVE2 565489 586423 1258649
random data here...... (2 Replies)
Discussion started by: lakanino
2 Replies
5. UNIX for Advanced & Expert Users
Hi all,
I am trying to execute the following command:
find 'path' -ls -exec cksum {} \;
As you can see this simply finds files from a given path and runs cksum on them.
My problem is this, if i have a FIFO in a directory the find tries to execute cksum on it and gets stuck.
From the man page i... (9 Replies)
Discussion started by: noam128
9 Replies
6. UNIX for Advanced & Expert Users
I need to modify the find command below to exclude the output of the directory /usr/UDPM/PerfMgmt/shmlck
find / \( -fstype ctfs -o -fstype mntfs -o -fstype objfs -o -fstype proc -o ! local \) -prune -o -type f -perm -0002 -print 2>/dev/null
I have tried many iterations and placement of... (2 Replies)
Discussion started by: interesting?
2 Replies
7. Shell Programming and Scripting
test.txt is the dynamic file but some of combination are fix
like below are the lines
;wonder_off =
;wonder_off = disabled
wonder_off =
wonder_off = disabled
the test.txt can content them in any order
#cat test.xt
;wonder_off =
;wonder_off = disabled
wonder_off =
wonder_off =... (5 Replies)
Discussion started by: SilvesterJ
5 Replies
8. Shell Programming and Scripting
Hi,
I need the logic to utilize the command output to be feeded over to successive commands,
for example :
$ dtconf list-ls-data-sources -h hostname -P 636 -w ~/pwd.txt
DATA MASTER 1
DATA MASTER 2
DATA CONSUMER 1
DATA CONSUMER 1
DATA CONSUMER 1
Based on above output, i would like... (7 Replies)
Discussion started by: johnprince1980
7 Replies
LEARN ABOUT CENTOS
ipurge
IPURGE(8) System Manager's Manual IPURGE(8)
*
NAME
ipurge - delete mail from IMAP mailbox or partition based on age or size
SYNOPSIS
ipurge [ -f ] [ -C config-file ] [ -x ] [ -X ] [ -i ] [ -s ] [ -o ]
[ -d days | -b bytes | -k Kbytes | -m Mbytes ]
[ mailbox-pattern... ]
DESCRIPTION
Ipurge deletes messages from the mailbox(es) specified by mailbox-pattern that are older or larger than specified by the -d, -b, -k or -m
options. If no mailbox-pattern is given, ipurge works on all mailboxes. If the -x option is given, the message age and size MUST match
exactly those specified by -d, -b, -k or -m. The are no default values, and at least one of -d, -b, -k or -m MUST be specified.
Ipurge by default only deletes mail below shared folders, which means that mails in mailbox(es) below INBOX.* and user.* stay untouched.
Use the option -f to also delete mail in mailbox(es) below these folders.
Ipurge reads its configuration options out of the imapd.conf(5) file unless specified otherwise by -C.
OPTIONS
-f Force deletion of mail in all mailboxes.
-C config-file
Read configuration options from config-file.
-d days
Age of message in days.
-b bytes
Size of message in bytes.
-k Kbytes
Size of message in Kbytes (2^10 bytes).
-m Mbytes
Size of message in Mbytes (2^20 bytes).
-x Perform an exact match on age or size (instead of older or larger).
-X Use delivery time instead of Date: header for date matches
-i Invert match logic: -x means not equal, date is for newer, size is for smaller
-s Skip over messages that have the Flagged flag set.
-o Only purge messages that have the Deleted flag set.
FILES
/etc/imapd.conf
CMU
Project Cyrus IPURGE(8)