continue;
                        len = strlen(de->d_name);
                        memcpy(fullname + baselen, de->d_name, len+1);
-                       if (excluded(fullname) != show_ignored)
-                               continue;
+                       if (excluded(fullname) != show_ignored) {
+                               if (!show_ignored || DTYPE(de) != DT_DIR) {
+                                       continue;
+                               }
+                       }
 
                        switch (DTYPE(de)) {
                        struct stat st;
                        if (ps_matched[num])
                                continue;
                        error("pathspec '%s' did not match any.",
-                             pathspec[num] + prefix_len);
+                             pathspec[num] + prefix_offset);
+                       errors++;
                }
                return errors ? 1 : 0;
        }