Jos*_*ber 23 javascript filesystems file-io node.js
我想删除目录中的几个文件,匹配正则表达式.像这样的东西:
// WARNING: not real code
require('fs').unlink(/script\.\d+\.js$/);
Run Code Online (Sandbox Code Playgroud)
由于unlink
不支持正则表达式,我使用它代替:
var fs = require('fs');
fs.readdir('.', (error, files) => {
if (error) throw error;
files.filter(name => /script\.\d+\.js$/.test(name)).forEach(fs.unlink);
});
Run Code Online (Sandbox Code Playgroud)
这是有效的,但IMO比它应该更复杂.
是否有更好的内置方法来删除与正则表达式匹配的文件(甚至只是使用通配符)?
dav*_*pfx 23
不,Node 库中没有通配符。如果你不想从 NPM 中提取一些东西,那么不用担心,它只需要一行代码。但是在我的测试中,其他答案中提供的代码大多不起作用。所以这是我的代码片段,经过测试,可以正常工作,纯原生 Node 和 JS。
let fs = require('fs')
const path = './somedirectory/'
let regex = /[.]txt$/
fs.readdirSync(path)
.filter(f => regex.test(f))
.map(f => fs.unlinkSync(path + f))
Run Code Online (Sandbox Code Playgroud)
use*_*109 10
你可以查看glob https://npmjs.org/package/glob
require("glob").glob("*.txt", function (er, files) { ... });
//or
files = require("glob").globSync("*.txt");
Run Code Online (Sandbox Code Playgroud)
glob内部使用minimatch.它的工作原理是将glob表达式转换为JavaScript RegExp对象.https://github.com/isaacs/minimatch
您可以使用回调中匹配的文件执行任何操作(或者在globSync的情况下返回对象).
归档时间: |
|
查看次数: |
13725 次 |
最近记录: |