Sponsored Content
Full Discussion: Find and Grep
Top Forums Shell Programming and Scripting Find and Grep Post 302911233 by Corona688 on Wednesday 30th of July 2014 03:38:43 PM
Old 07-30-2014
Commands in UNIX are case-sensitive, you can't just capitalize random things. Also, awk is missing a quote.

Quote:
Originally Posted by bharat1211
Code:
cd {directory path}
ls -ltr >> test.txt
cat test.txt | awk -F" " '{print $9}'| while read fl
Count=`grep  "not found" ${fl} | wc -l`
if [ ${Count}  -eq  2   ]
then
Echo ${fl} having "not found" string ${Count} times
fi
done

Also, that can be simplified a lot...
1) awk does not need cat's help to read a file.
2) awk's separator defaults to space, -F" " is redundant.
3) grep can count all by itself, via -c.
4) You don't need ls and awk to loop through a directory.
5) You especially don't need to ls -l -t then just throw away everything -l -t does for you.

ls -r -l -t | awk '{ print $9 }' | ... simplifies to ls -r | ... See man ls to learn what these options do.

6) If test.txt already existed, you'd be adding to it instead of replacing it, ending up with more filenames than you expected. Use > instead of >> to overwrite.

7) You don't need a temporary file. You can pipe into a loop as easily as anything else -- in fact you do so already, but didn't join the two.

8) find is often better than ls -r. You can tell it to find only files, for example (which is what -type f means.)

9) You don't need to run grep 12 times for 12 files. It's quite capable of counting more than one file.

Since "echo a b c d e | xargs cat" is equivalent to "cat a b c d e", we can feed find's list of files into xargs grep to grep many files at once.

It will print lines like filename:2 which we can read directly, telling the shell to split on : (The -H forces grep to always print the filename)

10) You only check for two and exactly two matches. You'd miss a file which had three. Try -ge for "greater than or equal to".

Code:
find /path/to/folder -type f | xargs grep -Hc "not found" | while IFS=":" read FILE C
do
        [ "$C" -ge 2 ] && echo "$FILE contains 'not found' $C times"
done


Last edited by Corona688; 07-30-2014 at 04:56 PM..
 

10 More Discussions You Might Find Interesting

1. Programming

find and grep

Hi, I need to find out a particular pattern from a directory, for example say X. The X directory contains 10 c files, and it has subdirectory called Y, and Y has 20 c files within it. Now I have to find out the pattern only from parent directory X not from sub directory Y. I have... (4 Replies)
Discussion started by: sarwan
4 Replies

2. Shell Programming and Scripting

find then grep

I have some patterns that I need to match with the content of several files and I'm having trouble to do it Here is what I tried already : ksh won't even execute this #!/bin/ksh path="/export/home/ipomwbas" pattern=$path"/flags" find . -name "*.properties" |\ while read file; do ... (7 Replies)
Discussion started by: flame_eagle
7 Replies

3. UNIX for Dummies Questions & Answers

grep and find

Hey, I have a question about using grep and find together to locate all C programs in a directory containing certain words and open the vi editor with each file. I'm not sure how to do this in one command (as in one line). I know find has a "-exec" option that can call vi, but how do you combine... (1 Reply)
Discussion started by: MEllis5
1 Replies

4. UNIX for Dummies Questions & Answers

find , grep

HI what is the difference between find and grep if I want to find all the files from different directories which contain "ORA" error, and the line number in each file which has ORA error should I use pipeline ? thanks James (3 Replies)
Discussion started by: james94538
3 Replies

5. Shell Programming and Scripting

Using Find w/ Grep?

Hey, I have a Find command like: find $searchDir -type f and this returns a list of files under the directory, which is all good, but, I want to filter that search for files that contain the string "people" I tried something like: find $searchDir -type f -exec grep "people" '{}'... (2 Replies)
Discussion started by: beefeater267
2 Replies

6. UNIX for Dummies Questions & Answers

Using find with a grep

:wall:Hello, Im having trouble using the find and grep combined into one command. I have the following: find filname* -mmin -60 grep "ERROR" filename I want to find the "ERROR" text in any file created in the last hour in the current directory. I dont know how to end the command. If I leave... (3 Replies)
Discussion started by: aispg8
3 Replies

7. UNIX for Dummies Questions & Answers

grep or find ?

I have a file called 'test.txt' that contains alphanumeric charecters. The file contains the word 'SBE' followed by other alphabets many times. For example, the file will contain: SBE334GH and also will have SBE77Y8I. When i do grep 'SBE*' test.txt - it outputs the entire file. Can you... (5 Replies)
Discussion started by: DallasT
5 Replies

8. 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

9. UNIX for Dummies Questions & Answers

find/xargs/*grep: find multi-line empty "try-catch" blocks - eg, missing ; not in a commented block

How can I recursively find all files in a directory and print out the file and first line number of any text blocks that match the below cases? This would seem to involve find, xargs, *grep, regex, etc. In summary, I want to find so-called empty "try-catch blocks" that do not contain code... (0 Replies)
Discussion started by: lifechamp
0 Replies

10. UNIX for Beginners Questions & Answers

Using grep in find

Hi, On AIX, We have several moveplan.xml files in different folders. I run: find /u0/appl_top/ -name moveplan.xml -exec grep -i Passphrase {} \; And it returns <name>Custom Identity Keystore Passphrase File</name> <name>Custom Trust Keystore Passphrase File</name> ... (4 Replies)
Discussion started by: big123456
4 Replies
All times are GMT -4. The time now is 08:25 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy