Trong node.js, tôi có thể liệt kê các tệp có đối sánh thẻ đại diện như
fs.readdirSync('C:/tmp/*.csv')?
Tôi không tìm thấy thông tin về đối sánh thẻ đại diện từ tài liệu fs .
Trong node.js, tôi có thể liệt kê các tệp có đối sánh thẻ đại diện như
fs.readdirSync('C:/tmp/*.csv')?
Tôi không tìm thấy thông tin về đối sánh thẻ đại diện từ tài liệu fs .
Câu trả lời:
Điều này không được bao phủ bởi lõi Node. Bạn có thể kiểm tra mô-đun này để biết những gì bạn đang theo đuổi.
npm i glob
var glob = require("glob")
// options is optional
glob("**/*.js", options, function (er, files) {
// files is an array of filenames.
// If the `nonull` option is set, and nothing
// was found, then files is ["**/*.js"]
// er is an error object or null.
})
Nếu hình cầu không hoàn toàn như những gì bạn muốn, hoặc hơi khó hiểu, thì cũng có hình cầu-f . Tài liệu bao gồm nhiều trường hợp sử dụng với các ví dụ.
// sync
var files = glob.readdirSync('*.js', {});
// async
glob.readdir('*.js', function(err, files) {
console.log(files);
});
// stream
glob.readdirStream('*.js', {})
.on('data', function(file) {
console.log(file);
});
// promise
glob.readdirPromise('*.js')
.then(function(files) {
console.log(file);
});
Chỉ trong trường hợp bạn muốn tìm kiếm tệp bằng regex (đối với các kết quả phù hợp phức tạp), thì hãy xem xét sử dụng tệp-regex , hỗ trợ tìm kiếm đệ quy và kiểm soát đồng thời (để có kết quả nhanh hơn).
Sử dụng mẫu
import FindFiles from 'file-regex'
// This will find all the files with extension .js
// in the given directory
const result = await FindFiles(__dirname, /\.js$/);
console.log(result)
đừng phát minh lại bánh xe, nếu bạn đang sử dụng * nix, lscông cụ có thể dễ dàng làm điều này ( tài liệu api nút )
var options = {
cwd: process.cwd(),
}
require('child_process')
.exec('ls -1 *.csv', options, function(err, stdout, stderr){
if(err){ console.log(stderr); throw err };
// remove any trailing newline, otherwise last element will be "":
stdout = stdout.replace(/\n$/, '');
var files = stdout.split('\n');
});
dir /Blệnh, bạn cũng có thể cần phải chia trên \r\n, không tích cực
globhoặc một số mô-đun khác sẽ thích hợp hơn (ví dụ: nếu bạn muốn triển khai trên nhiều nền tảng và không chắc chắn về việc lssẽ hoạt động giống nhau hay không) nhưng tôi không coi câu trả lời của mình là cẩu thả hoặc "rõ ràng hoặc không chính xác một cách nguy hiểm" . "Sử dụng phiếu phản đối của bạn bất cứ khi nào bạn gặp một bài đăng cẩu thả, không tốn nhiều công sức hoặc một câu trả lời rõ ràng và có thể không chính xác một cách nguy hiểm."