PATH:
usr
/
local
/
lib
/
node_modules
/
pm2
/
node_modules
/
shelljs
/
src
var path = require('path'); var common = require('./common'); var _ls = require('./ls'); common.register('find', _find, {}); //@ //@ ### find(path [, path ...]) //@ ### find(path_array) //@ //@ Examples: //@ //@ ```javascript //@ find('src', 'lib'); //@ find(['src', 'lib']); // same as above //@ find('.').filter(function(file) { return file.match(/\.js$/); }); //@ ``` //@ //@ Returns array of all files (however deep) in the given paths. //@ //@ The main difference from `ls('-R', path)` is that the resulting file names //@ include the base directories (e.g., `lib/resources/file1` instead of just `file1`). function _find(options, paths) { if (!paths) { common.error('no path specified'); } else if (typeof paths === 'string') { paths = [].slice.call(arguments, 1); } var list = []; function pushFile(file) { if (process.platform === 'win32') { file = file.replace(/\\/g, '/'); } list.push(file); } // why not simply do `ls('-R', paths)`? because the output wouldn't give the base dirs // to get the base dir in the output, we need instead `ls('-R', 'dir/*')` for every directory paths.forEach(function (file) { var stat; try { stat = common.statFollowLinks(file); } catch (e) { common.error('no such file or directory: ' + file); } pushFile(file); if (stat.isDirectory()) { _ls({ recursive: true, all: true }, file).forEach(function (subfile) { pushFile(path.join(file, subfile)); }); } }); return list; } module.exports = _find;
[-] popd.js
[edit]
[-] ln.js
[edit]
[-] echo.js
[edit]
[-] which.js
[edit]
[-] find.js
[edit]
[-] exec-child.js
[edit]
[-] sed.js
[edit]
[-] cp.js
[edit]
[+]
..
[-] mv.js
[edit]
[-] tail.js
[edit]
[-] cd.js
[edit]
[-] to.js
[edit]
[-] dirs.js
[edit]
[-] cat.js
[edit]
[-] grep.js
[edit]
[-] common.js
[edit]
[-] test.js
[edit]
[-] head.js
[edit]
[-] tempdir.js
[edit]
[-] pushd.js
[edit]
[-] touch.js
[edit]
[-] uniq.js
[edit]
[-] toEnd.js
[edit]
[-] chmod.js
[edit]
[-] mkdir.js
[edit]
[-] error.js
[edit]
[-] ls.js
[edit]
[-] exec.js
[edit]
[-] sort.js
[edit]
[-] rm.js
[edit]
[-] set.js
[edit]
[-] pwd.js
[edit]