About find


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers About find
# 8  
Old 07-10-2012
The assumption behind the use of find:

By default find "goes down into" (recurses) subdirectories, so simply telling you that the file exists (using a return code ) is pointless. find may locate several files in several directories with the same name, it may find one or none. But without knowing the FULL NAME (directory/filename) of the file the fact that the file exists somewhere is completely useless without actual name of the file.

So error return codes are mostly limited to errors involving access/existence of directories, or other standard filesystem-related problems like too many symbolic links.
# 9  
Old 07-10-2012
Quote:
Originally Posted by vbe
Here is the case of return code that isnt 0:
Code:
aco $ find ./home/oracle/.dt/Desktop -name toto;echo $?
find: cannot open ./home/oracle/.dt/Desktop
1

[lyang0@ala lyang0]$ mkdir test
[lyang0@ala lyang0]$ cd test/
[lyang0@ala test]$ find ./ -name xx;echo $?
0

---------- Post updated at 08:02 AM ---------- Previous update was at 07:59 AM ----------

Quote:
Originally Posted by vbe
look:
Code:
n12:/home/vbe $ find bin/ -name bla.c
n12:/home/vbe $                               # <- empty: nothing found
n12:/home/vbe $ find bin/ -name prn  
bin/prn                                             # found!

dont confuse return code (exit value...) and what the command returns (result of the search using find...)
I mean can we use "if" in the bash to judge if it find or not

1)to use "if" to judge it find
2)to use if to judge it not find

Lei
# 10  
Old 07-10-2012
Code:
[lyang0@ala lyang0]$ mkdir test
[lyang0@ala lyang0]$ cd test/
[lyang0@ala test]$ find ./ -name xx;echo $?
0

Correct and no error!
What does 0 mean? That the execution of find was successfull - Has nothing to do with finding something - what we are trying to tell you from the beginning: Dont mix up what an exit code is for...
# 11  
Old 07-10-2012
In other words if you want to use if you will have to check the output of find...
Quote:
I mean can we use "if" in the bash to judge if it find or not

1)to use "if" to judge it find
2)to use if to judge it not find
I dont understand here... either 1) or 2) ...
You use if for a condition ( boolean ), the possible output of find is not a boolean so like that (brut de fonderie as we would say in french...) you cannot but will have to use the output in a way you get a yes/no type of answer e.g. Is there an output ( and so find found something...) or is there more than 0 found... look at my previous posts
From now you have enough to be able to sort yourself out...

Last edited by vbe; 07-10-2012 at 01:05 PM.. Reason: typos
# 12  
Old 07-10-2012
Java

Quote:
Originally Posted by vbe
Code:
[lyang0@ala lyang0]$ mkdir test
[lyang0@ala lyang0]$ cd test/
[lyang0@ala test]$ find ./ -name xx;echo $?
0

Correct and no error!
What does 0 mean? That the execution of find was successfull - Has nothing to do with finding something - what we are trying to tell you from the beginning: Dont mix up what an exit code is for...

I can use
Code:
if grep "xxx" * -r;then
echo "found"
else
echo "not found"
fi

[
The quesion how can I use "find" like "grep", you know whether find or not with find it always "1"
# 13  
Old 07-10-2012
In general it always helps if you post what Operating System and version you have and what Shell you use. There is variation in the find command and in my solution there may be code which doesn't work on your system.

Question 1)
One method is to use a workfile:
Code:
my_workfile=/tmp/my_workfile.$$
find bin/ -xdev -type f -name 'bla.c' -print > ${workfile}
# Anything in the file?
if [ -s ${workfile} ]
then
        echo "Files found were"
        cat ${workfile}
else
        echo "No files found"
fi

Note the use of -type f and -xdev and the quotes round the name of the file.

I've assumed that bin/ is some directory under your home directory. On most systems /bin is a link to /usr/bin anyway.


Question 2)
Easier with two finds:
Code:
my_workfile=/tmp/my_workfile.$$
find bin/ -xdev -type f -name 'bla.c' -print > ${workfile}
find /usr/bin/ -xdev -type f -name 'bla.c' -print >> ${workfile}
# Anything in the file?
if [ -s ${workfile} ]
then
        echo "Files found were"
        cat ${workfile}
else
        echo "No files found"
fi


Question 3)
It is preferable to specify a positive list of mountpoints or directories you want to search rather than to build a complex find -prune. On some systems you will never want to search certain filesystems like /proc or /tmp.

Last edited by methyl; 07-10-2012 at 01:56 PM.. Reason: typos
# 14  
Old 07-10-2012
Code:
if find . -name xxx | read f; then
    # something was found
else
    # nothing found
fi

Of course, with this you cannot know if something was not found because there is nothing to find or because find encountered some error.

Regards,
Alister

Last edited by alister; 07-10-2012 at 02:16 PM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find string1, when true find string2 in reverse direction

Hello, This is a bit complicated for me. My scenario in MyFile: Search string1, When string1 is found, grep the line containing string1, go back over that line in upward direction and grep the first line containing string2. Here is an example: MyFile His email address... (17 Replies)
Discussion started by: baris35
17 Replies

2. Shell Programming and Scripting

How to find a file with a specific pattern for current sysdate & upon find email the details?

I need assistance with following requirement, I am new to Unix. I want to do the following task but stuck with file creation date(sysdate) Following is the requirement I need to create a script that will read the abc/xyz/klm folder and look for *.err files for that day’s date and then send an... (4 Replies)
Discussion started by: PreetArul
4 Replies

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

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

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

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

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

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