如何在Windows终端中修复'查找'命令

时间:2019-04-26 09:11:40

标签: javascript node.js bash filesystems

我编写了一个Nodejs脚本,该脚本查找上次更改/修改的文件名。

因此,我正在使用expected CLI命令。我有一个隐藏文件 .change 可以将其他文件与该文件进行比较(修改时间)。

这是下面的代码:

find

如果我在 Git Bash 中运行此命令,一切都可以正常工作,但是如果我使用Windows终端,则表示命令不正确。

有没有一种简单的方法可以同时在Linux和Windows终端上使用?

我想在两个平台上都运行此命令,因为一些团队成员正在Linux上工作,而其他团队成员正在使用Windows计算机。

2 个答案:

答案 0 :(得分:2)

考虑通过平台特定的命令或实用程序使用Node的内置fs.Statsfs模块的公开fs.stat方法返回属性mtime,该属性包括以毫秒为单位的上次修改时间。

答案 1 :(得分:1)

可以通过子进程或使用fs.statfs.writeFile来实现交叉兼容性。

统计信息返回这样的对象:

Stats {
  dev: 16777220,
  mode: 33188,
  nlink: 1,
  uid: 501,
  gid: 20,
  rdev: 0,
  blksize: 4096,
  ino: 5077219,
  size: 11,
  blocks: 8,
  atimeMs: 1556271390822.264,
  mtimeMs: 1556271389892.5886,
  ctimeMs: 1556271389892.5886,
  birthtimeMs: 1556270439285.706,
  atime: 2019-04-26T09:36:30.822Z,
  mtime: 2019-04-26T09:36:29.893Z,
  ctime: 2019-04-26T09:36:29.893Z,
  birthtime: 2019-04-26T09:20:39.286Z }

正如评论和答案中所建议,我同意这将是一种更好的方法。这是您创建新文件并检查创建日期的方法。

const fs = require('fs');
// Directory
const PATH = './';
// Get file's stats
fs.stat(`./.change`, function(error, stats) {
  if (error) { throw error; } // Throw if an error, file not found
  let time = Date.now(); // Current Time
  console.log(`Current .change: Created: `, stats['mtime']); // Created Time 
  // If current time > file creation time
  if (time > stats['mtime']) {
    // writeFile function with filename, content and callback function
    fs.writeFile(`${PATH}/.change`, 'Inside File', function (error) {
      if (error) { throw error; }
        console.log('File is updated successfully.');
    });
  }
});