删除(取消链接)与正则表达式匹配的文件
我想删除目录中的几个文件,匹配正则表达式。像这样的东西:
// WARNING: not real code
require('fs').unlink(/script\.\d+\.js$/);
由于unlink
不支持正则表达式,我使用它代替:
var fs = require('fs');
fs.readdir('.', (error, files) => {
if (error) throw error;
files.filter(name => /script\.\d+\.js$/.test(name)).forEach(fs.unlink);
});
这是有效的,但IMO比它应该更复杂。
是否有更好的内置方法来删除与正则表达式匹配的文件(甚至只是使用通配符)?
回答如下:你可以看看glob https://npmjs/package/glob
require("glob").glob("*.txt", function (er, files) { ... });
//or
files = require("glob").globSync("*.txt");
glob内部使用minimatch。它的工作原理是将glob表达式转换为JavaScript RegExp对象。 https://github/isaacs/minimatch
您可以使用回调中匹配的文件执行任何操作(或者在globSync的情况下返回对象)。