This script uses find to search all sub-directories from the specified directory. Any file with the same name as it's parent directory is removed.
Note all the quotes are needed to deal with directories/files with spaces in their name.
Code:
#!/bin/bash
if [ $# -ne 1 -o ! -d "$1" ]
then
echo "Usage $0 dirname"
exit 1
fi
find "$1" -type f -print | while read file
do
dir=$(dirname "$file")
dname=$(basename "$dir")
fname=$(basename "$file")
[ "$dname" = "$fname" ] && rm "$file"
done