no awk você poderia fazer
awk -F "/" '
{ filenames[$NF]=$0 ; occurence[$NF]++ ; }
END { for (basename in filenames)
{ if (occurence[basename] == 1)
{ print filenames[basename]
}
}
} ' listA listB
Existe, obviamente, uma maneira mais rápida de fazer isso, e eu abuso "{...}", mas espero que esteja claro:
-
primeiro preenchemos uma matriz "filenames []" usando o nome do índice $ NF (= ÚLTIMO campo na linha usando "/" como separador, isto é, o nome da base).
-
E também contamos o número de $ NF que vimos, graças ao array occurence [] (se mais que "1", só temos o mais recente em nomes de arquivo [$ NF], e temos ocorrências [$ NF] > 1)
-
Então, apenas imprimimos aqueles que têm uma ocorrência == 1