The trick: Use grep -q and check the return code to see only those that match.
When I would use it: I need to find a symbol in a bunch of shared objects.
Example:
#/bin/sh
if [ $# -ne 2 ]
then
echo usage: $0 DIR SYMBOL
exit 1
fi
DIR=$1
SYMBOL=$2
for lib in $DIR/*.so.*
do
if [ -r $lib ]
then
objdump -t $lib | grep -q $SYMBOL
if [ $? -eq 0 ]
then echo $lib
fi
fi
done
To run it:
./find-symbol.sh /usr/lib64 sendmsg