Unix Find with exec option.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Unix Find with exec option.
# 1  
Old 11-21-2011
Unix Find with exec option.

All,

I am using following find command to see all the files with specified pattern :

Code:
find /exp/source -exec grep -li "SIT_MARKET" {} \;


say , the /exp/source has n number of subdirectories and each subdirectory has its own directory tree. If this is the case I will get a result like this :

Code:
 
/exp/source/MARKET/ver1.0/source/code/prod/SIT_MARKET.sql
/exp/source/MARKET/ver1.0.1/source/code/prod/SIT_MARKET_SIT.sql
/exp/source/MARKET_NEW/ver1.0/source/prod/SIT_MARKET.sql
/exp/source/TEST/code/SIT_MARKET_TEST.sql

Here my need is to restrict the find list to only the first line. The find should stop after printing the first line.

Is there way to achieve this ? Your help in this regard is highly appeciated.

Thanks,
-M
# 2  
Old 11-21-2011
re-direct these o/p to a tmp file and then dispaly your number of outpot by using head command. and after display remove that temp file.
# 3  
Old 11-21-2011
Quote:
Originally Posted by manas_ranjan
re-direct these o/p to a tmp file and then dispaly your number of outpot by using head command. and after display remove that temp file.
Thanks for your reply.

This solution will not work for me. My aim is to reduce the traverse happeing to the find command by stopping the find command once after getting the first result itself.

Thanks,
-M
# 4  
Old 11-21-2011
You may try something like this:

Code:
perl -MFile::Find -le'
  ($pattern, $dir) = @ARGV;
  find { 
    wanted => sub {
      return unless -f;
      $f = qx/grep -i "$pattern" "$_"/;
      print $File::Find::name and exit 
        if $f;      
        }
    }, $dir
  '  SIT_MARKET /exp/source

# 5  
Old 11-21-2011
Quote:
Originally Posted by kanu_kanu
Thanks for your reply.

This solution will not work for me. My aim is to reduce the traverse happeing to the find command by stopping the find command once after getting the first result itself.

Thanks,
-M
pipe it through head, then. Once it gets enough results, head quits, killing find with SIGPIPE.
This User Gave Thanks to Corona688 For This Post:
# 6  
Old 11-21-2011
Quote:
Originally Posted by Corona688
pipe it through head, then. Once it gets enough results, head quits, killing find with SIGPIPE.
I'm not able to get it work that way when -exec is present ..., I might be missing something, of course.
# 7  
Old 11-21-2011
OK, it seems to work with xargs:

Code:
{ find /exp/source -type f | xargs -l grep -li SIT_MARKET | head -1 ;} 2>/dev/null

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

2 exec in find

Guys, I want to find the log files greather than 23 days and i want to perform 2 things here. one is to list the files and second is to gzip the files. hope this can be done using sh -c option. but not sure the exact command. find . -name "*.log" -mtime +23 -exec ls -la {} \; ... (5 Replies)
Discussion started by: AraR87
5 Replies

2. Shell Programming and Scripting

find: missing argument to `-exec' while redirecting using find in perl

Hi Friends, Please help me to sort out this problem, I am running this in centos o/s and whenever I run this script I am getting "find: missing argument to `-exec' " but when I run the same code in the command line I didn't find any problem. I am using perl script to run this ... (2 Replies)
Discussion started by: ramkumarselvam
2 Replies

3. Ubuntu

Find and EXEC

This is a huge issue. and I need it fixed ASAP. account-system gate-system race_traffic_sensor achievement-system global race_voicepack admin glue-system realdriveby admin-system gps realism-system... (5 Replies)
Discussion started by: austech360
5 Replies

4. Ubuntu

Find and exec

Hello, I am a linux newbe. I want to install a program. I can download it only with wget command from internet. As far as i know this wget command does not transfer the exacutable flags. Because of that i wanted to find all configure files and change their mod to 744. I found this... (1 Reply)
Discussion started by: disconnectus
1 Replies

5. UNIX for Dummies Questions & Answers

Find Exec

Hello All, Is there a way to make exec do a couple of operations on a single input from find? For example, find . -type d -exec ls -l "{}" ";" I would like to give the result of each "ls -l" in the above to a wc. Is that possible? I want to ls -l | wc -l inside... (1 Reply)
Discussion started by: prasanna1157
1 Replies

6. Shell Programming and Scripting

recently introduced to the newer option for find...does an older option exist?

To find all the files in your home directory that have been edited in some way since the last tar file, use this command: find . -newer backup.tar.gz Is anyone familiar with an older solution? looking to identify files older then 15mins across several directories. thanks, manny (2 Replies)
Discussion started by: mr_manny
2 Replies

7. Shell Programming and Scripting

unix find command without mmin option

I need to check if a file has been modified within the last x hours. My find command does not have the mmin option -- only the mtime option which is in 24 hour perriods (1 Reply)
Discussion started by: Bill Ma
1 Replies

8. Shell Programming and Scripting

Using MV FIND and -EXEC

Hi, i would like to rename files in directories and subdirs. Files contains specific french or strange caracters. I want to replace all non alpha-numerics by _ (underscore) First, i made this, but i think the "for" is limited. How can i do this directly by FIND ? for file in $(find .... (0 Replies)
Discussion started by: degraff63
0 Replies

9. Shell Programming and Scripting

| with find -exec

can we use |(pipe operator) with find -exec.....? or can pipe the output of find command to another command...? if not, why...? pls explain (3 Replies)
Discussion started by: vijay_0209
3 Replies

10. UNIX for Advanced & Expert Users

find and exec

Hi, Happy new year. Would you be so kind to explain me what does this instruction : find /rep/app -type l -exec ls -l {} \;> allink.lst Many thanks. (2 Replies)
Discussion started by: big123456
2 Replies
Login or Register to Ask a Question