node-glob - Globbing for Node
[4:46pm] _ry: it would be good to
have a file system Glob functionality (to get an array of
filenames)
npm install glob
(You can also install it by doing node-waf configure build
and then
linking or copying the folder into your project's node_modules
directory.)
A glob is a pattern-matching syntax that shells use. Like when you do
rm *.js
, the *.js
is a glob.
You can do nifty things with them.
- Macintosh OS X (Darwin)
- FreeBSD
- NetBSD
- Linux
- Solaris
If it doesn't work on one of those environments, please post a bug.
This is a binding to
glob(3) and
fnmatch(3). It includes
a statically compiled port of the NetBSD glob and fnmatch
programs, so it might not exactly match what #include <fnmatch.h>
or #include <glob.h>
implements on your system.
To load the library:
var glob = require("glob")
Search through the filesystem asynchronously.
- pattern: String
- flags: int, Optional (see below)
- cb: function
NOTHING!
glob(pattern, flags, function (er, matches) {
// if an error occurred, it's in er.
// otherwise, "matches" is an array of filenames.
...
})
Search through the filesystem synchronously
- pattern: String
- flags: int, Optional (see below)
Array of strings that match.
var matches = glob.globSync(pattern, flags) // throws on error
Test if a string matches a pattern. (no i/o performed)
- pattern: String
- str: String to test
- flags: int, Optional (see below)
var isMatch = glob.fnmatch(pattern, str, flags)
The behavior of glob and fnmatch are modified by several bitwise flags.
The flags are defined on the main glob object. If you have an integer, and want to look up which flag it corresponds to, you can look it up on the glob/globSync functions if it is a glob flag, or on the fnmatch function if it is an fnmatch flag.
That is, fnmatch[fnmatch.FNM_CASEFOLD] === 'FNM_CASEFOLD'
.
GLOB_DEFAULT
Used if no flags are passed toglob()
orglobSync()
. Equivalent ofGLOB_BRACE|GLOB_LIMIT|GLOB_STAR|GLOB_MARK|GLOB_TILDE
.FNM_DEFAULT
Used if no flags are passed tofnmatch()
. Equivalent ofFNM_PATHNAME|FNM_PERIOD
.GLOB_MARK
Append / to matching directories.GLOB_NOCHECK
Return pattern itself if nothing matches.GLOB_NOSORT
Don't sort.GLOB_NOESCAPE
Disable backslash escaping.GLOB_NOSPACE
Malloc call failed.GLOB_ABORTED
Unignored error.GLOB_NOMATCH
No match, and GLOB_NOCHECK was not set.GLOB_NOSYS
Implementation does not support function.GLOB_BRACE
Expand braces ala csh.GLOB_NOMAGIC
GLOB_NOCHECK without magic chars (csh).GLOB_LIMIT
Limit memory used by matches to ARG_MAXGLOB_TILDE
Expand tilde names from the passwd file.GLOB_PERIOD
Allow metachars to match leading periods.GLOB_NO_DOTDIRS
Make . and .. vanish from wildcards.GLOB_STAR
Use glob**
to recurse directoriesGLOB_QUOTE
source compatibilityFNM_NOMATCH
Match failed.FNM_NOSYS
Function not implemented.FNM_NORES
Out of resourcesFNM_NOESCAPE
Disable backslash escaping.FNM_PATHNAME
Slash must be matched by slash.FNM_PERIOD
Period must be matched by period.FNM_CASEFOLD
Pattern is matched case-insensitiveFNM_LEADING_DIR
Ignore / after Imatch.