Sponsored Content
Top Forums Shell Programming and Scripting find command with complex logic Post 302387077 by MaureenT on Thursday 14th of January 2010 11:41:11 AM
Old 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

advanced/complex uses of the find command

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

Complex find grep or sed command

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

complex find in script

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

pls help! complex find and replace

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

complex find command

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

Help with complex find syntax

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

Complex find and replace only 1st instance string with dynamic combination

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

Command Logic

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
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 06:19 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy