find command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting find command
# 1  
Old 08-14-2010
find command

Hi,
Need help in understanding the behaviour of the find command.
I am writing a command to find out all the known errors in the log files and console files. That would help me in understanding the health of the application server. I have written the below command that would run a few execs' in the find command and return the count of the instances of those known errors.

Code:
  bmadmin@helloecadev17:/www/a/logs$ find . -name "WSdev*F.nohup" -ls \( \( -exec printf "Unable to connect:" \; -exec /usr/xpg4/bin/fgrep -c 'Unable to connect' {} \; \) -o \( -exec printf "weblogic.servlet.jsp.CompilationException:" \; -exec /usr/xpg4/bin/fgrep -c 'weblogic.servlet.jsp.CompilationException' {} \; \) -o \( -exec printf "WeblogicConnectionClosedError-BEA-001153:" \; -exec /usr/xpg4/bin/fgrep -c '<BEA-001153>' {} \; \) -o \( -exec printf "java.lang.OutOfMemoryError:" \; -exec /usr/xpg4/bin/fgrep -c 'java.lang.OutOfMemoryError' {} \; \) -o \( -exec printf "<BEA-000337>:" \; -exec /usr/xpg4/bin/fgrep -c '<BEA-000337>' {} \; \) \)
    557334    1 lrwxrwxrwx   1 bmadmin  bmadmin        30 Aug 13 03:48 ./WSdev51F.nohup -> WSdev51F.nohup.20100813_034801
    Unable to connect:0
    weblogic.servlet.jsp.CompilationException:0
    WeblogicConnectionClosedError-BEA-001153:51
    551633    1 lrwxrwxrwx   1 bmadmin  bmadmin        30 Jun  2 22:21 ./WSdev53F.nohup -> WSdev53F.nohup.20100602_222152
    Unable to connect:0
    weblogic.servlet.jsp.CompilationException:0
    WeblogicConnectionClosedError-BEA-001153:0
    java.lang.OutOfMemoryError:0
    <BEA-000337>:0
    535669    1 lrwxrwxrwx   1 bmadmin  bmadmin        30 Aug 13 09:49 ./WSdev50F.nohup -> WSdev50F.nohup.20100813_093044
    Unable to connect:4
    561467    1 lrwxrwxrwx   1 bmadmin  bmadmin        30 Aug 14 17:22 ./WSdev49F.nohup -> WSdev49F.nohup.20100814_172217
    Unable to connect:0
    weblogic.servlet.jsp.CompilationException:0
    WeblogicConnectionClosedError-BEA-001153:0
    java.lang.OutOfMemoryError:0
    <BEA-000337>:0
    bmadmin@helloecadev17:/www/a/logs$

So, as you see that, there are 5 such known errors that would impact the health of the application server.
I want the count of all 5 such known errors but the commands that I have written so far, doesnt return the count of the other instances once it finds the result in one of them.

e.g. 1 file, stops the execution at the 3 errors and doesnt return the count of the 4 and 5 errors.
2nd & 4th file, executes all the known errors because no error records were found in the file.
3rd file, stop the execution at the first error itself since the records are found there.

I have tried the "-o" and "-a" options. "-a" or no options executes only the first known-errors
# 2  
Old 08-14-2010
In my opinion you are really overloading the find command. My inclination would be to let find simply locate the files, and then use a simple shell function to execute the search of the files. There isn't anything to be gained by driving the searches from find.

This script is completely untested, but should do what you want. It finds the files and then executes the search function for each. The search function echoes the search string and the count of that string in the file.

Code:
#!/usr/bin/env ksh
PATH="/usr/xpg4/bin:$PATH"

function search
{
        # print the filename, the search pattern and the result of the grep
        echo "$2: $1: $(fgrep -c "$1" $2)"
}

find . -name "WSdev*F.nohup" | while read fname
do
        search "Unable to connect:" $fname
        search "WeblogicConnectionClosedError-BEA-001153:" $fname
        search "weblogic.servlet.jsp.CompilationException:" $fname
        search "java.lang.OutOfMemoryError:" $fname
        search "<BEA-000337>:" $fname
done

The function is only a convenience to avoid typing the search string twice, or having to directly assign it to a variable making the body of the script a bit easier to read.
This User Gave Thanks to agama For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

Is it possible to find the seek rate of the find command in Solaris?

Hello, I am running some performance based tests on Solaris, and I was wondering how fast the "seeking" rate of Solaris is, or how fast Solaris can get information about files with the "find" command. Does anyone know what 'find' command I could run to traverse through my system to see the rate... (1 Reply)
Discussion started by: bstring
1 Replies

2. Shell Programming and Scripting

Find multiple string in one file using find command

Hi, I want find multiple string in one file using find coomand. And keeping it in one variable.grep is not working. (5 Replies)
Discussion started by: vivek1489
5 Replies

3. Shell Programming and Scripting

How to use grep & find command to find references to a particular file

Hi all , I'm new to unix I have a checked project , there exists a file called xxx.config . now my task is to find all the files in the checked out project which references to this xxx.config file. how do i use grep or find command . (2 Replies)
Discussion started by: Gangam
2 Replies

4. Shell Programming and Scripting

Find, regular expression, anyway to simplify this find command?

Hello everyone, first post here, trying to learn scripting on my own and this forum as been really helpful so far. I made few little scripts working great but I m facing some problems with RE. I have a bunch of files in many subdirectories called *001.ext *002.ext OR simple *.ext or *01.ext... (7 Replies)
Discussion started by: Sekullos
7 Replies

5. Shell Programming and Scripting

what is the find command to find exact dir from the root

I want to find a dir called STOP from the root.so what is the find command. Thanks & Regards Rajkumar (1 Reply)
Discussion started by: rajkumar_g
1 Replies

6. Linux

Simplified find command to find multiple file types

Hi, I'm using the following command to find the multiple requierd file types and its working fine find . -name "*.pl" -o -name "*.pm" -o -name "*.sql" -o -name "*.so" -o -name "*.sh" -o -name "*.java" -o -name "*.class" -o -name "*.jar" -o -name "*.gz" -o -name "*.Z" -type f Though... (2 Replies)
Discussion started by: vickramshetty
2 Replies

7. Shell Programming and Scripting

find: No match due to find command being argument

I am using csh and getting the error "find: No match." but I cannot figure out why. What I am trying to do is set the find command to a variable and then execute the variable as a command. I ran it through a debugger and it looks like $FIND is getting set but the find command can not actually be... (2 Replies)
Discussion started by: mst3k4l
2 Replies

8. UNIX for Dummies Questions & Answers

how to find a file named vijay in a directory using find command

I need to find whether there is a file named vijay is there or not in folder named "opt" .I tried "ls *|grep vijay" but it showed permission problem. so i need to use find command (6 Replies)
Discussion started by: amirthraj_12
6 Replies

9. Shell Programming and Scripting

Little bit weired : Find files in UNIX w/o using find or where command

Yes , I have to find a file in unix without using any find or where commands.Any pointers for the same would be very helpful as i am beginner in shell scritping and need a solution for the same. Thanks in advance. Regards Jatin Jain (10 Replies)
Discussion started by: jatin.jain
10 Replies

10. Shell Programming and Scripting

command find returned bash: /usr/bin/find: Argument list too long

Hello, I create a file touch 1201093003 fichcomp and inside a repertory (which hava a lot of files) I want to list all files created before this file : find *.* \! -maxdepth 1 - newer fichcomp but this command returned bash: /usr/bin/find: Argument list too long but i make a filter all... (1 Reply)
Discussion started by: yacsil
1 Replies
Login or Register to Ask a Question