目前使用Chokidar对文件结构进行文件监视。我需要查看特定目录,但忽略该目录中创建的任何子目录。
例如,
/var/app/current/somedir
我会看到在中创建的任何文件。但是,如果在目录中创建了某个目录,那么我希望递归地忽略它,从而忽略它下创建的任何其他内容。
chokidar.watch(configuration.theDir, {
ignored: `/\\var\\app\\current\\somedir\\<match anything here, except other directories!>\\<anything here would be ignored and further down...>/`,
awaitWriteFinish: {
stabilityThreshold: 2000,
pollInterval: 100
}
}).on('add', (file, details) => {
// console.log(file, path);
});对于我来说,找到正确实现正则表达式的方法是真实的。不幸的是,创建的目录是随机的,名称事先不知道。这能做到吗?
发布于 2016-12-05 05:40:04
这个regex表达式将匹配是一个目录或属于基的子目录(由下面的斜杠/定义的目录)的所有内容。
对于您的示例,基础是:/var/app/current/somedir
Regex:/^\/var\/app\/current\/somedir\/.*[\/].*$/i
测试:
var tests = [
'/var/app/current/somedir/fileOrFolder.txt',
'/var/app/current/somedir/fileOrFolder/',
'/var/app/current/somedir/fileOrFolder/ssads/sad.s',
'/var/app/current/somedir/fileOrFolder.sd/sdasda.asda/',
'/var/app/current/somedir/fileOrFolder.txt',
'/var/app/current/somedir/fileOrFolder'
]
for (var ii = 0, nn = tests.length; ii < nn; ii++)
{
if (/^\/var\/app\/current\/somedir\/.*[\/].*$/i.test(tests[ii]))
{
console.log('"'+tests[ii]+'"', 'Matched, so ignored.');
}
else
{
console.log('"'+tests[ii]+'"', 'Not matched, so watch.');
}
}在JavaScript控制台中打印以下内容:
/*
* "/var/app/current/somedir/fileOrFolder.txt" Not matched, so watch.
* "/var/app/current/somedir/fileOrFolder/" Matched, so ignored.
* "/var/app/current/somedir/fileOrFolder/ssads/sad.s" Matched, so ignored.
* "/var/app/current/somedir/fileOrFolder.sd/sdasda.asda/" Matched, so ignored.
* "/var/app/current/somedir/fileOrFolder.txt" Not matched, so watch.
* "/var/app/current/somedir/fileOrFolder" Not matched, so watch.
*/https://stackoverflow.com/questions/40967445
复制相似问题