使用JavaScript / nodejs计算目录中的文件数?

时间:2015-11-18 08:34:06

标签: javascript node.js

如何使用nodejs使用纯JavaScript或包计算目录中的文件数?我想做这样的事情:

How to count the number of files in a directory using Python

或者在bash脚本中我会这样做:

getLength() {
  DIRLENGTH=1
  until [ ! -d "DIR-$((DIRLENGTH+1))"  ]; do
    DIRLENGTH=$((DIRLENGTH+1))
  done
}

7 个答案:

答案 0 :(得分:38)

使用fs,我发现检索目录文件计数很简单。

const fs = require('fs');
const dir = './directory';

fs.readdir(dir, (err, files) => {
  console.log(files.length);
});

答案 1 :(得分:3)

没有外部模块的替代解决方案,可能不是最有效的代码,但是可以在没有外部依赖的情况下完成:

      if (isset($_GET['action']) && ($_GET['action'] == 'process') && isset($_POST['formid']) && ($_POST['formid'] == $_SESSION['sessiontoken'])) {

        $error = false;
        $google_captcha = HTML::sanitize($_POST['g-recaptcha-response']);

        var_dump($google_captcha);
        var_dump($OSCOM_GoogleRecaptcha->check($google_captcha));
       exit;
 }

result of var_dump : string(0) "" bool(false) 

答案 2 :(得分:3)

const fs = require('fs')
const length = fs.readdirSync('/home/directory').length

答案 3 :(得分:2)

1)下载shell.js和node.js(如果你没有) 2)转到下载它的位置并在那里创建一个名为countFiles.js的文件

var sh = require('shelljs');

var count = 0;
function annotateFolder (folderPath) {
  sh.cd(folderPath);
  var files = sh.ls() || [];

  for (var i=0; i<files.length; i++) {
    var file = files[i];

    if (!file.match(/.*\..*/)) {
      annotateFolder(file);
      sh.cd('../');
    } else {
      count++;
    }
  }
}
if (process.argv.slice(2)[0])
  annotateFolder(process.argv.slice(2)[0]);
else {
  console.log('There is no folder');
}

console.log(count);

3)打开shelljs文件夹中的命令promt(其中countFiles.js是)并写入node countFiles "DESTINATION_FOLDER"(例如node countFiles "C:\Users\MyUser\Desktop\testFolder"

答案 4 :(得分:0)

好的,我有一个更简单的方法:

function count() {
  var shell = require('shelljs');

  return shell.exec("cd destinationFolder || exit; ls -d -- */ | grep 'page-*' | wc -l", { silent:true }).output;
} 

module.exports.count = count;

就是这样。

答案 5 :(得分:0)

这是简单的代码,

ci

答案 6 :(得分:0)

const readdir = (path) => {
  return new Promise((resolve, reject) => {
    fs.readdir(path, (error, files) => {
      error ? reject(error) : resolve(files);
    });
  });
};s

readdir("---path to directory---").then((files) => {
  console.log(files.length);
});