This is also only very small hint.

As you probably already very well know databases on PostgreSQL server are isolated and you cannot so easily run queries across them.

This small query shows one simple way how to check for some pattern in table and view names across all databases.


with
pattern as (select '...here_your_pattern_even_with_%_character....'::text as _mask),   --add % where you need it - start / end / inside etc...
dbs as (select datname, 'dbname='||datname as _link from pg_database where datistemplate is false and datname not in ('postgres')) -- here you can exclude more databases from the search
select dbs.datname,
array[(select _res from dblink(dbs._link,
'select
''Tables: ''||coalesce( (string_agg( (select schemaname||''.''||tablename from pg_tables where tablename like '''||pattern._mask||'''), '', '') ), ''none'')||''| ''||
''Views: ''||coalesce( (string_agg( (select schemaname||''.''||viewname from pg_views where viewname like '''||pattern._mask||'''), '', '') ), ''none'')
as _result') as t1(_res text))] as _res
from dbs, pattern