Can I simplify this script?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Can I simplify this script?
# 1  
Old 05-28-2010
Can I simplify this script?

Hi all,

I have a script which runs every morning which clears down a series of directories. The structures of which are;

Code:
/opt/feeds/failed/feed1
/opt/feeds/succeed/feed1
/opt/feeds/failed/feed2
/opt/feeds/succeed/feed2
/opt/feeds/failed/feed3
/opt/feeds/succeed/feed3
etc
etc

Files older then 2 in the failed directories need removing, and older then 6 in the succeed.

At the moment I am running the following, however wondered if there was a way of using the same "list" to check both directories (failed and succeed) in the same run line;

Code:
for feed in `cat clean_feeds_list`; do find /opt/feeds/Failed/${feed} -mtime +2 -type f -exec rm {} \; ; done
for feed in `cat clean_feeds_list`; do find /opt/feeds/Succeed/${feed} -mtime +6 -type f -exec rm {} \; ;done

So the "clean_feeds_list" contains what would come after /opt/fuel/feeds/Failed e.g. feed1, feed2, etc etc

Can anyone recommend a more simple way of doing this in one line?

My overall aim would be to have the full directory line within the "clean_feeds_list" so I could just run;

Code:
do find ${feed} -mtime +6 -type f -exec rm {} \;

And it would clear both Failed and Succeed if that makes sense?
JayC89
# 2  
Old 05-28-2010
Try :
Code:
Keep_succeed=6
Keep_failed=2
Keep_other=

File_list=clean_feeds_list

while read feed
do

   case "${feed}" in
     */failed/*)  keep=${Keep_failed}  ;;
     */succeed/*) keep=${Keep_succeed} ;;
     *)           keep=
   esac
   [ -z "${keep}" ] && continue
   find ${feed} -mtime +${keep} -type f | xargs rm 

done <${File_list}<

Jean-Pierre.
# 3  
Old 05-28-2010
Thank you for the reply Jean-Pierre.

I tried your script however initially it produced an error;

Code:
./test.sh: line 18: syntax error near unexpected token `newline'
./test.sh: line 18: `done <${File_list}<'

I removed the last "<" so it looked like;

Code:
Keep_succeed=6
Keep_failed=2
Keep_other=

File_list=clean_feeds_list

while read feed
do

   case "${feed}" in
     */failed/*)  keep=${Keep_failed}  ;;
     */succeed/*) keep=${Keep_succeed} ;;
     *)           keep=
   esac
   [ -z "${keep}" ] && continue
   find ${feed} -mtime +${keep} -type f | xargs rm

done <${File_list}

Which seemed to run, however nothing happened. Any ideas as to why?
JayC89
# 4  
Old 05-28-2010
Add the -e or -v option (depending of your unix flavour) to the rm command for displaying deleted files.

You can also turn on debugging :
Code:
set -x
Keep_succeed=6
. . . .

Jean-Pierre.
# 5  
Old 05-28-2010
Managed to get it work - was a typo on my part! Sorry about that!! Smilie

Would there be a way of making it so the "list" file just contains the main directory e.g.

Code:
/opt/feeds/1/
/opt/feeds/2/
/opt/feeds/3/
/opt/feeds/4/
...

And the script then looks for subdirectories within those being;
[CODE]
Failed
Succeed[
/CODE]

Just to saving having duplicates in the list file e.g;

Code:
/opt/feeds/1/Failed/
/opt/feeds/1/Succeed/
/opt/feeds/2/Failed/
/opt/feeds/2/Succeed/

JayC89
# 6  
Old 05-28-2010
Code:
Keep_succeed=6
Keep_failed=2

File_list=./jay2.txt

while read feed
do

   find ${feed%/}/failed  -mtime +${Keep_failed}  -type f | xargs rm
   find ${feed%/}/succeed -mtime +${Keep_succeed} -type f | xargs rm

done <${File_list}

Jean-Pierre.
# 7  
Old 06-01-2010
Thanks for the help Jean-Pierre! Smilie
JayC89
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to simplify this code?

hi guys need your help...how to simplify this script... for i in `cat dmp.txt` do model=$i more $model | grep : | cut -d ":" -f 2- | grep : | grep -v "=" > temp1 more $model | grep / | cut -d ":" -f 2- > temp2 more $model | grep = | cut -d ":" -f 2- > temp3 more... (2 Replies)
Discussion started by: zulabc
2 Replies

2. Shell Programming and Scripting

simplify regular expressions

Hi can anyone help me with how to simplify this regular expression ---------- Post updated at 09:16 PM ---------- Previous update was at 09:11 PM ---------- IS THIS RIGHT ? (3 Replies)
Discussion started by: drew211
3 Replies

3. Shell Programming and Scripting

simplify/combine if statements would be nice

below is something i inherited: if && && ; then HOST_SELECT="-m quadcore" fi if && && ; then HOST_SELECT="-m quadcore" fi if && && ; then HOST_SELECT="-m octocore1" fibelow is what i changed it to: if && && ; then HOST_SELECT="-m quadcore"... (2 Replies)
Discussion started by: crimso
2 Replies

4. Shell Programming and Scripting

Simplify Bash Script Using "sed" Or "awk"

Input file: 2 aux003.net3.com error12 6 awn0117.net1.com error13 84 aux008 error14 29 aux001.ha.ux.isd.com error12 209 aux002.vm.ux.isd.com error34 21 alx0027.vm.net2.com error12 227 dux001.net5.com error123 22 us008.dot.net2.com error121 13 us009.net2.com error129Expected Output: 2... (4 Replies)
Discussion started by: sQew
4 Replies

5. Programming

How to simplify this perl script to a cleaner simpler look?

my $branch_email_e = $FORM{r_Branch}; my $hostbranch_email_e = $FORM{r_Host_Branch}; my $branch_email_f = $FORM{r_Direction_generale}; my $hostbranch_email_f = $FORM{r_Direction_generale_daccueil}; my $branch_realname_e = ''; my $branch_realname_f = ''; ... (4 Replies)
Discussion started by: callyvan
4 Replies

6. Shell Programming and Scripting

simplify the script, check field match to value in a file

Hi Everyone, Below is the script, i feel there should be more simple way to do the same output, my one works, but feel not nice. like using index i feel it is slow (image my file is very large), maybe awk can do one line code? Please advice. # cat 1.txt 1 a 2 b 3 cc 4 d # cat 1.pl... (6 Replies)
Discussion started by: jimmy_y
6 Replies

7. Shell Programming and Scripting

Help to simplify with awk

Hi, Need your help guys. I'm trying to tweak my current shell-script to make it run faster. I think a part of the code that takes too long is the splitting of the 1st field of my CSV raw-file to date-time. Below is the 1st column of my CSV file: $ awk -F"," {'print $1'} temp-*|head... (5 Replies)
Discussion started by: daytripper1021
5 Replies

8. Shell Programming and Scripting

How can I simplify the script

Hi all, How can I simplify following script, Logic is to find two strings (strings are case sensitive) from a file. if ; then if ; then Group=`echo $1_hostname` fi fi Please help me on this. Regards Sudhish s. kumar (8 Replies)
Discussion started by: sudhish
8 Replies

9. Shell Programming and Scripting

a script to simplify the use of grep

I'm trying to write a script that simplify the use of grep utility. these are the option that I'd like to use with the script " -c -i -l -n -v". When I execute the script none of these option works. I really appreciate any idea or tips regarding this problem. here the code echo " Enter 1-7:"... (2 Replies)
Discussion started by: kemobyte
2 Replies
Login or Register to Ask a Question