find/if statement not working


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting find/if statement not working
# 1  
Old 12-14-2005
Data Ksh find/if statement not working

Hi guys:
I am trying to delete multiple files in a folder with different names. Below is the script that I was trying, but it doesn't work

**************************
#!/bin/ksh
DATE=`date '+20%y%m%d'`
DEL_DIR=<dir where files have to be deleted>
let DATE2=$(($DATE - 2))
let DATE1=$(($DATE -1))
DELFILE_1=abc1.txt.$DATE1*
DELFILE_2=abc1.txt.$DATE2*
DELTAR=cdr.$DATE2.tar

find $DEL_DIR -name $DELFILE_2 -exec rm -f '{}' \;
find $DEL_DIR -name $DELTAR -exec rm -f '{}' \;

**************************
The files I am looking to delete are:
abc.<todays date minus 2>.tar
ex: abc.20051212.tar

abc1.txt.<date-2><some numbers>
ex: abc1.txt.20051212010101

The error message I get is when I run the find command(s) :
find: paths must precede expression
Usage: find [path...] [expression]

The find statement works when on the command line but not in the script. I also used the following command line which gave the same error message when run from the script but not on the command line

find $DEL_DIR -name $DELFILE_2 |xargs rm -f

I also tried using the If statement as shown below but it doesn't delete the files

if [[ -a $DELFILE_2 ]]; then
rm -f $DELFILE_2
fi

fi [[ - a $DELTAR ]]; then
rm -f $DELTAR
fi

The server is running redhat linux 4
Your help is appreciated.

Thanks,

-Gm

Last edited by geomonap; 12-14-2005 at 05:49 PM..
# 2  
Old 12-14-2005
Use find -mtime, or +mtime

find /tmp -type f -name '*.log' -mtime +2 -exec rm -rf '{}' ';'

this would find all files in slash tmp that end with dot log that are two days old.
# 3  
Old 12-14-2005
Quote:
Originally Posted by dtruchan
this would find all files in slash tmp that end with dot log that are two days old.
A slight correction. This would find files that are more than 3 days old.
# 4  
Old 12-15-2005
Actually the issue is not that find command is not working. I am able to run the find command successfully on the command line but not in the script. When I use it in the script, it gives me the following error message:

find: paths must precede expression
Usage: find [path...] [expression]


Also, the if statement doesnot work if I find multiple files with the following characteristics:
abc1.txt.$DATE2*

How can i successfully look for files "abc.txt.$DATE2* and delete them. On the command line I can use the find command and delete these files but the same command doesn't work in the script.

-George
# 5  
Old 12-15-2005
Quote:
Originally Posted by blowtorch
A slight correction. This would find files that are more than 3 days old.
Getting closer Smilie

-mtime 2 means exactly 2 days old (i.e. exactly 60*60*24*2 = 172,800 seconds old)
-mtime -2 means less than 2 days old
-mtime +2 means more than 2 days old
# 6  
Old 12-15-2005
geomonap, do stuff like:
echo DELFILE_2= $DELFILE_2
just before your find statement so you can see what is happening.

And I doubt that you are running the same find command from your command line. Instead, you are probably replacing the variables with what you think they should contain. Your whole problem is probably garbage in your variables.
# 7  
Old 12-15-2005
perderabo:
I ran the that entire part of the script on the command line, and I was successful.

the actual files look like this:

abc1.txt.2005121303000
abc1.txt.2005121303001
abc1.txt.2005121409001
abc1.txt.2005121503081

So I need to filter and delete all the files that have 20051213 in them which signifies that it is 2 days older. I don't want to delete them on the basis of the mtime cause the mtime can change.

-George
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Read statement not working

hello guys, i am having the below piece of code error () { echo"Press y /n" read ans case $ans in y) main;; n) exit esac } In the abve code, read statement is not working i.e not waiting for user to enter input. ,i tested exit status its 1. could anyone help me to do this ... (11 Replies)
Discussion started by: mohanalakshmi
11 Replies

2. Shell Programming and Scripting

Case statement not working as expected

case "$freq" in " Hz") low=250; high=550;; "8 Hz") low=250; high=1000;; " Hz") low=400; high=1000;; "63 Hz") low=550; high=1000;; " Hz") low=400; high=550;; ... (2 Replies)
Discussion started by: Michael Stora
2 Replies

3. Shell Programming and Scripting

If statement is not working in KSH

#! /bin/ksh rm -f ./xyz file --- this line is working // Below any if stmt is not working. if then echo " blah blah " fi or I replaced above if with if then echo "dir exists" fi This is also not working. I am new to KSH. So can someone help why if stmt is not... (31 Replies)
Discussion started by: saggy9583
31 Replies

4. Shell Programming and Scripting

Cshell if statement not working

Hi .I am trying to check the first arguments =-s and the third =-d,but it doesnt work ,any idea why It gives me if: Missing file name Thanks #case -s and files if( $1 == "-s" && $3 != "-d" ) then echo "case s" endif (1 Reply)
Discussion started by: lio123
1 Replies

5. Shell Programming and Scripting

If statement is not working.

Hi. With the help of this group I have created a shell script to find the factorial of a number. OK. Then I got wild.;) I tried to put in a check to make sure the entry is a number. read num If )) then echo "This is not a valid number. Try again." fi while (( $var <= $num)) more... (5 Replies)
Discussion started by: Ccccc
5 Replies

6. UNIX for Dummies Questions & Answers

if statement not working as desired

Hello all, I am trying to write a post-commit hook script using bash script. What I am trying to do here is: Developers check in their files to a branch. I check the repository and based on the commit I email QA people. QA verifies and moves the files to a prod branch and email is sent... (1 Reply)
Discussion started by: kminkeller
1 Replies

7. Shell Programming and Scripting

Read statement not working in a script

I have a script consisting of certain functions whose input is a file at same location. In that file i have written the name of anothe file at same location. The third file contains a word which act as a function in the first script.Let me give an example i have a scrip file say 1.sh in which i am... (7 Replies)
Discussion started by: sumitdua
7 Replies

8. Shell Programming and Scripting

read statement not working in a function

Pls this is emergency.I have written a script which is taking input from another script. and the contents of my second script are acting as functions to my main script.Now the problem is that in one of the functions i want the script ececution to stop and start when user enters any character r... (2 Replies)
Discussion started by: sumitdua
2 Replies

9. UNIX for Dummies Questions & Answers

until statement not working

im trying to write an until statement which dont go onto the next stage until the user inputs a certain phrase. It is then stored in an array. Ive come up with this code so far but its not working and i dont know why. read in1 until do echo "Incorrect, try again" ... (2 Replies)
Discussion started by: strasner
2 Replies

10. Shell Programming and Scripting

If statement not working

I understand this question probably poses some child like stupidity, but I can't get this if statement to work for love or money. #!/bin/ksh echo "Input either 1 or 2" read Num if ; then echo "Message 1" if ; then echo "Message 2" else echo "false" fi $ ksh decisions Input either 1... (6 Replies)
Discussion started by: Hazmeister
6 Replies
Login or Register to Ask a Question