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?
-
Please don't cross-post.Dennis Williamson– Dennis Williamson2011年01月23日 17:14:11 +00:00Commented Jan 23, 2011 at 17:14
2 Answers 2
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.
I feel that this is the most concise and direct method:
test "`find /tmp/ -name something -print -quit 2>/dev/null`"
-
1This will only work if there's not more than a single match. Double quotes around the backticks should overcome this.Dennis– Dennis2013年02月06日 19:16:03 +00:00Commented Feb 6, 2013 at 19:16
-
Also, I accidentally omitted
-print -quit.danorton– danorton2013年02月07日 18:19:52 +00:00Commented Feb 7, 2013 at 18:19