В приведенном ниже коде выполняется поиск файлов, содержащих указанную строку под каталогом/подкаталогами.
чтобы активировать его, вы набираете node [jsfilename] [folder] [filename] [ext] Мне также хотелось бы объявить: ничего не найдено в console.log каждый раз, когда слово не было найдено.
я пробовал
if (!regex.test(fileContent)) {
console.log('Noting found');
он работает только в том случае, если у вас есть один файл без вашего слова, но если нет, он будет проходить. например, если у вас есть 4 файла, и у одной из них есть строка, которую она покажет. Ваше слово было найдено в каталоге: [file] Отметив найденное.
Итак, как я могу остановить цикл после одного !found
console.log и как я могу предотвратить его показ, если что-то нашел?
const path = require('path');
const fs = require('fs');
function searchFilesInDirectory(dir, filter, ext) {
if (!fs.existsSync(dir)) {
console.log('Specified directory: ${dir} does not exist');
return;
}
const files = fs.readdirSync(dir);
const found = getFilesInDirectory(dir, ext);
found.forEach(file => {
const fileContent = fs.readFileSync(file);
const regex = new RegExp('\\b' + filter + '\\b');
if (regex.test(fileContent)) {
console.log('Your word was found in directory: ${file}');
}
});
}
function getFilesInDirectory(dir, ext) {
if (!fs.existsSync(dir)) {
console.log('Specified directory: ${dir} does not exist');
return;
}
let files = [];
fs.readdirSync(dir).forEach(file => {
const filePath = path.join(dir, file);
const stat = fs.lstatSync(filePath);
if (stat.isDirectory()) {
const nestedFiles = getFilesInDirectory(filePath, ext);
files = files.concat(nestedFiles);
} else {
if (path.extname(file) === ext) {
files.push(filePath);
}
}
});
return files;
}
searchFilesInDirectory(process.argv[2], process.argv[3], process.argv[4]);
Изменить:
if (!regex.test(fileContent)) {
console.log('Noting found');
// ...
чтобы:
if (!printed && !regex.test(fileContent)) {
console.log('Noting found');
printed = true;
// ...
и убедитесь, что у вас есть переменная, называемая printed
определенная во внешней области, изначально ложная.