This is how I would do it:
Download the UniProt/SWISSPROT flat file for bacteria from here.
After decompressing the files, extract the E. coli protein IDs for which there is no PDB annotation in the file (I am giving you a command line that will work on *ix systems (Linux/Unix/OSX etc)):
zcat uniprot_sprot_bacteria.dat.gz | gawk '{if($1~/ID/){if($2~/_ECOLI/){id=$2; frag=0; eco=1; want=1}else{eco=0}} if($1~/DE/ && $0~/Flags: Fragment/){frag=1;}if($1~/DR/ && $2~/PDB/){want=0; } if($1~/\/\// && want==1 && eco==1 && frag==0){print id}}' > no_pdbs.txt
Explaining the details of this command line is clearly off topic here :). Suffice it to say that it will print those UniProt IDs from the flat file
whose name ends in _ECOLI and for which there is no PDB annotation in the file. It also ignores protein fragments. If you need help understanding it, let me know and we can chat or something.
The result of this quick and dirty analysis is a list of 2694 E.coli proteins with no PDB annotations in the UniProt flat files.
CAVEATS:
These are only the curated SWISSPROT proteins, you may want to also get the UniProt/TrEMBL proteins from here. I would recommend you stick to SWISSPROT though.
As others have pointed out, you should filter this list for homology to other known structures.
The fact that there is no PDB annotation in the flat file does not necessarily mean that there is no known structure.
So, this is not perfect but it should serve as a starting point. Good luck!