要件は次のとおりです:
ディレクトリ全体で40Mほどあり、ファイルも無数にあります。久しぶりなのでどのファイルにその文字列が入っているか思い出せません。強力で目もくらむような Node.js がデビューします。
Windows に Node.js をインストールすることは、通常のソフトウェアをインストールすることと何ら変わりません。インストール後に Node.js のショートカットを開くか、直接 cmd を実行します。
findString.js を作成する
var path = require("path");
var fs = require("fs");
var filePath = process.argv[2];
var lookingForString = process.argv[3];
recursiveReadFile(filePath);
function recursiveReadFile(fileName){
if(!fs.existsSync(fileName)) return;
if(isFile(ファイル名)){
check(ファイル名);
}
if(isDirectory(ファイル名)){
var files = fs.readdirSync(fileName);
files.forEach(function(val,key){
var temp = path.join(fileName,val);
If(isDirectory(temp)) recursiveReadFile(temp);
If (isFile(temp)) check(temp);
})
}
}
関数チェック(ファイル名){
var data = readFile(ファイル名);
var exc = new RegExp(lookForString);
If(exc.test(data))
console.log(ファイル名);
}
関数 isDirectory(ファイル名){
If(fs.existsSync(fileName)) return fs.statSync(fileName).isDirectory();
}
関数 isFile(ファイル名){
if(fs.existsSync(fileName)) return fs.statSync(fileName).isFile();
}
関数 readFile(ファイル名){
if(fs.existsSync(fileName)) return fs.readFileSync(fileName,"utf-8");
}
2 つのパラメーター: 最初のパラメーターは「フォルダー名」、2 番目のパラメーターは「探している文字列」です
写真:
ファイル パスを出力して完了です。それでは終わりです。そのスピードは本当に凄まじく、目もくらむほどです。 。 。 Javaの全文検索を使うと大変なことになります…