Using EntityFieldQuery's FieldCondition on file fields (or complex fields)
A file field only contains the fid (file ID) relating to the file. The extra data you see (filename, uri, etc.) are loaded by the file module, but are actually contained in the file_managed table, which is not a field table.

Since EntityFieldQuery doesn't support JOINs you're out of luck, unless you alter the query a bit later on, e.g.

$query = new EntityFieldQuery();
$query-&gt;entityCondition('entity_type', 'node');
$query-&gt;addTag('customtag');

...

function MYMODULE_query_customtag_alter(QueryAlterableInterface $query) {
  $query-&gt;innerJoin('file_managed', 'file_managed', 'file_managed.fid = field_data_field_name.fid');
  $query-&gt;condition('file_managed.filename', $something);
}


That will obviously need some tweaking for your specific situation.