I think ultimatelyUltimately, the answer by @Mr.Wizard is the way to create and manipulate many lists. ButBut, that doesn't answer theOP's question if youone can't create the lists yourselfoneself and need to deal with listlists already created with variouscomplicated names.
So, this answer your question, but ultimately the advisable implementation is the one by @Mr.Wizard
Using Names
gives a list of the names of symbols that match the string or pattern,
Names["list*"]
(* {"list1", "list2", "list3", "list4"} *)
Therefore adding ToExpression
and Catenate
Catenate[ToExpression /@ Names["list*"]]
(* {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p} *)
So, this answer your question, but ultimately the advisable implementation is the one by @Mr.Wizard.