2

when I perform

 find /tmp -name something 

find command not find the something word under /tmp

 echo $?
 I get $?=0

it's OK

but how to enable Exit status diff then 0 when find command not find the something word?

asked Jan 23, 2011 at 14:19
1

2 Answers 2

1

find returns 0 if it runs successfully and non-zero if there are errors. It does not set the exit code based on whether anything was found. You will need to do something like this:

files=$(find /tmp -name something)
if [[ -n "$files" ]]
then
 echo "files were found"
fi

It's more likely, however, that you want to do something with the filenames. You can process them in a loop:

find /tmp -name something | while read -r filename
do
 echo "found: $filename
done

or

while read -r filename
do
 echo "found: $filename
done < <(find /tmp -name something)

If nothing is found then the loop will exit without doing anything.

answered Jan 23, 2011 at 15:54
1

I feel that this is the most concise and direct method:

test "`find /tmp/ -name something -print -quit 2>/dev/null`"
answered Feb 6, 2013 at 18:52
2
  • 1
    This will only work if there's not more than a single match. Double quotes around the backticks should overcome this. Commented Feb 6, 2013 at 19:16
  • Also, I accidentally omitted -print -quit. Commented Feb 7, 2013 at 18:19

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.