docs: function find(term, callback, opts) {
    term = util.expandPath(term);
    opts = opts || {};
    var skipDirs = opts.filters || claire.defaultFilters;
    var matches = [];
  
    var root = getRoot(term, opts);
    var finder = findit(root, {followSymlinks: true});
    var matchOpts = {pre: opts.pre, post: opts.post};
  
    var searchDepth = util.getPathDepth(getRelativeTerm(term, root));
    finder.on('directory', function(dir, stat, stop) {
      if(_.contains(skipDirs, path.basename(dir))) {
        return stop();
      }
  
      var match = fuzzy.match(term, dir, matchOpts);
      if(match) {
        match.dir = dir;
        match.file = '';
        matches.push(match);
      }
  
      var relative = dir.slice(root.length);
      var currentDepth = (relative) ? util.getPathDepth(relative) : 0;
  
      if(currentDepth >= searchDepth) {
        return stop();
      }
    });
  
    finder.on('file', function(file, stat) {
      var match = fuzzy.match(term, file, matchOpts);
      if(!match) {
        return;
      }
  
      match.dir = path.dirname(file);
      match.file = path.basename(file);
      matches.push(match);
    });
  
    finder.on('end', function(err) {
  
      matches = _.sortBy(matches, function(match) {
        return -match.score;
      });
  
      _.each(matches, function(match) {
        match.dir = util.normalizePath(match.dir);
        // Slice off shared path between search term and directory.
        if(opts.short) {
          shorten(term, match, opts);
        }
      });
  
      callback(err, matches);
    });
  }