mercredi 7 février 2018

Javascript,nodejs: give a "string not found" messege on console.log

The code listed below searches for files that contains a specified string under it's directory/subdirectories.

to activate it, you type node [jsfilename] [folder] [filename] [ext] i would also like it to announce: Nothing found in a console.log every time that a word wasn't found.

ive tried

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

it works only if you have one file without your word, but if not ,it loops. for example if you have 4 files and one of them has the string it wil show Your word was found in directory: [file] Noting found Noting found Noting found.

So, how can i stop the loop after one !found console.log and how can i prevent it from showing in case of something has found?

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]);

Aucun commentaire:

Enregistrer un commentaire