Javascript, nodejs: дать сообщение «строка не найдена» на console.log

1

В приведенном ниже коде выполняется поиск файлов, содержащих указанную строку под каталогом/подкаталогами.

чтобы активировать его, вы набираете 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]);
Теги:
loops
if-statement
console.log

1 ответ

0
Лучший ответ

Изменить:

if (!regex.test(fileContent)) {
        console.log('Noting found');
        // ...

чтобы:

if (!printed && !regex.test(fileContent)) {
        console.log('Noting found');
        printed = true;
        // ...

и убедитесь, что у вас есть переменная, называемая printed определенная во внешней области, изначально ложная.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню