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?
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`"