Kann ich in node.js Dateien mit Wildcard-Übereinstimmungen wie auflisten?
fs.readdirSync('C:/tmp/*.csv')?
Ich habe die Informationen zum Platzhalterabgleich in der fs-Dokumentation nicht gefunden .
Kann ich in node.js Dateien mit Wildcard-Übereinstimmungen wie auflisten?
fs.readdirSync('C:/tmp/*.csv')?
Ich habe die Informationen zum Platzhalterabgleich in der fs-Dokumentation nicht gefunden .
Antworten:
Dies wird vom Knotenkern nicht abgedeckt. Sie können in diesem Modul nachsehen, wonach Sie suchen.
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.
})
Wenn glob nicht ganz das ist, was Sie wollen, oder ein wenig verwirrend, gibt es auch glob-fs . Die Dokumentation behandelt viele Verwendungsszenarien mit Beispielen.
// 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);
});
Nur für den Fall, dass Sie Dateien nach Regex durchsuchen möchten (für komplexe Übereinstimmungen), sollten Sie File-Regex verwenden , der die rekursive Suche und die Parallelitätskontrolle unterstützt (für schnellere Ergebnisse).
Beispielnutzung
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)
Erfinde das Rad nicht neu. Wenn du auf * nix bist ls
, kann das Tool dies problemlos tun ( Node API Docs ).
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 /B
Befehl versuchen. Möglicherweise müssen Sie auch aufteilen \r\n
, nicht positiv
glob
oder ein anderes Modul vorzuziehen wäre (z. B. wenn Sie auf vielen Plattformen bereitstellen möchten und sich nicht sicher sind, ob ls
es sich gleich verhält), aber ich halte meine Antwort nicht für schlampig oder "eindeutig oder gefährlich falsch". . "Verwenden Sie Ihre Abstimmungen immer dann, wenn Sie auf einen ungeheuer schlampigen, mühelosen Beitrag oder eine Antwort stoßen, die eindeutig und möglicherweise gefährlich falsch ist."