我编写了一个Nodejs脚本,它查找最后更改/修改的文件名。
因此,我使用find CLI命令。我有一个隐藏文件.change来比较其他文件和那个文件(修改的时间)。
下面是一个代码:
const es6dir = 'es6';
const path2dir = './htdocs/';
const exec = require("child_process").exec;
exec(`find ${path2dir + es6dir}/ -type f -newer .change`, (error, stdout) => {
if(error){
console.log(`Error: ${error}`);
return;
}
console.log(stdout);
//update .change modified timestamp
exec('touch -c .change');
}如果我在Git中运行这个命令,一切都很好,但是如果我使用windows终端,则会显示一个不正确的命令。
有一种简单的方法可以同时适用于Linux和Windows终端吗?
我想在这两个平台上运行这个命令,因为一些团队成员正在Linux上工作,而其他人则在使用windows机器。
发布于 2019-04-26 09:33:04
交叉兼容性可以通过子进程或使用fs.stat和fs.writeFile来实现。
Stats返回这样的对象:
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.');
});
}
});https://stackoverflow.com/questions/55864346
复制相似问题