Aqui está um script que deve funcionar para você.
#!/bin/bash
function chooser {
echo
echo "I found the following screen sessions: "
echo
pcount=0
#
# find the session dir
#
sessdir=$( screen -ls | egrep 'Socket' | awk '{print $NF}' | sed -e 's/\.$//' )
#
# enumerate existing sessions, and add them to the plist() array.
#
for screen in $( find $sessdir -type p ); do
pcount=$((pcount+1))
pname=$( basename $screen )
pdate=$( ls -latr $screen | awk '{print "( "$6" "$7" "$8" )"}')
plist[$pcount]=${pname}
echo " [$pcount] $pname $pdate"
done
echo
echo -n "Please select a session to reconnect to: "
read choice
#
# if the selected choice doesn't exist, recycle the chooser.
#
if [ -z ${plist[$choice]} ]; then
echo
echo "Your choice [$choice] is invalid. Please try again."
echo
sleep 1
chooser
else
screen -r -d ${plist[$choice]}
fi
}
#
# the chooser function does all the work
#
chooser
Eu não fiz distinção entre as sessões que estão atualmente anexadas ou desanexadas, então você pode ter que fazer isso sozinho se for importante para você.