1.11M Members

Using find in a bash shell script

 
0
 

I recently ran the following command from the command line and it worked
find . -name '*jrAPS*_ouput.log' -exec grep '<string expression>' {}\; -print

I put it in a shell script like this and it did not work
find . -name \'*jrAPS*_output.log\' -exec grep \'<string expression>\' {} \\\; -print

the result was find: incomplete statement why?

 
0
 

On my system, I don't need to perform all the escaping that you are doing. The same command that I use on the command line works in the shell script because nothing is interpreting the command before executing it. However, if you have another shell reading commands from this script and executing them, then you would need the escapes. If that doesn't help use bash -n $0 where $0 is your current command line to see if you have syntax errors before running. Sometimes the error messages are slightly different (or more of them) when just analyzing.

 
0
 

Thanks I will do that do you know any Linux servers I can get access to on the net to try this.?

 
0
 

Sorry, I don't know of any public Linux Servers.
If you need an easy install try Xandros Open Edition. You answer 5 or 10 questions, wait about 30 minutes and voila instant Linux - with sound and networking. http://www.xandros.com

 
0
 

Thanks I will check out these sites

 
0
 

Here is the shell script I am trying to run in bash

if [ $# -neq 1 ];
then
echo "Usage: <program name> <string expression>"
exit 1
fi

findstr=$1
echo "$findstr"

find . -name 'm1_jrAPS*_output.log' -exec grep \'"$findstr"\' {} \; -print


In the above script I want to take the string from the command line and put it in the find command in the shell script I have a hard time getting the shell to expand it in single quotes like in the regular command

Question Answered as of 9 Years Ago by coca-light and Dani
 
0
 

I found an easier solution using command substitution and looping.

 
0
 

Hi,
Im having a similar problem here.
Im trying to make a script:

#/bin/bash
teste="{33,351}";
ls -laht /tmp/interface*_${teste}_*.xml

but it gives an error. If i change ${teste} for the static value itself it works.

Any idea? I've tried to evaluate with the $() but it doesnt work.

Thanks

 
0
 

find . -name \'*jrAPS*_output.log\'|xargs egrep "a regular expresion"

You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article