diff --git a/cmd/novendor.go b/cmd/novendor.go
new file mode 100644
index 0000000..783f1d0
--- /dev/null
+++ b/cmd/novendor.go
@@ -0,0 +1,75 @@
+package cmd
+
+import (
+	"fmt"
+	"os"
+	"path/filepath"
+	"strings"
+
+	"github.com/Masterminds/cookoo"
+)
+
+// NoVendor takes a path and returns all subpaths that are not vendor directories.
+//
+// It is not recursive.
+//
+// If the given path is a file, it returns that path unaltered.
+//
+// If the given path is a directory, it scans all of the immediate children,
+// and returns all of the go files and directories that are not vendor.
+func NoVendor(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) {
+	path := p.Get("path", ".").(string)
+
+	return noVend(path)
+}
+
+// Take a list of paths and print a single string with space-separated paths.
+func PathString(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) {
+	paths := p.Get("paths", []string{}).([]string)
+	s := strings.Join(paths, " ")
+	fmt.Println(s)
+	return nil, nil
+}
+
+// noVend takes a directory and returns a list of Go-like files or directories,
+// provided the directory is not a vendor directory.
+func noVend(path string) ([]string, error) {
+
+	info, err := os.Stat(path)
+	if err != nil {
+		return []string{}, err
+	}
+
+	if !info.IsDir() {
+		return []string{path}, nil
+	}
+
+	res := []string{}
+	f, err := os.Open(path)
+	if err != nil {
+		return res, err
+	}
+
+	fis, err := f.Readdir(0)
+	if err != nil {
+		return res, err
+	}
+
+	for _, fi := range fis {
+		full := filepath.Join(path, fi.Name())
+		if fi.IsDir() && !isVend(fi) {
+			res = append(res, full)
+		} else if !fi.IsDir() && isGoish(fi) {
+			res = append(res, full)
+		}
+	}
+	return res, nil
+}
+
+func isVend(fi os.FileInfo) bool {
+	return fi.Name() == "vendor"
+}
+
+func isGoish(fi os.FileInfo) bool {
+	return filepath.Ext(fi.Name()) == ".go"
+}
diff --git a/glide.go b/glide.go
index 0f1dee5..d421168 100644
--- a/glide.go
+++ b/glide.go
@@ -187,6 +187,20 @@
 			},
 		},
 		{
+			Name:      "novendor",
+			ShortName: "nv",
+			Usage:     "List all non-vendor directories and go files in a directory.",
+			Description: `Given a directory, list all the relevant Go files that are not vendored.
+
+Example:
+
+			$ go test $(glide novendor)
+`,
+			Action: func(c *cli.Context) {
+				setupHandler(c, "nv", cxt, router)
+			},
+		},
+		{
 			Name:  "pin",
 			Usage: "Print a YAML file with all of the packages pinned to the current version",
 			Description: `Begins with the current glide.yaml and sets an absolute ref
@@ -404,6 +418,11 @@
 		Includes("@startup").
 		Does(cmd.Status, "status")
 
+	reg.Route("nv", "No Vendor").
+		Includes("@startup").
+		Does(cmd.NoVendor, "paths").
+		Does(cmd.PathString, "out").Using("paths").From("cxt:paths")
+
 	reg.Route("status", "Status").
 		Includes("@startup").
 		Does(cmd.Status, "status")
