Given a directory get al the txt files and get how many occurences of a string are in every text file using find and grep.
find $1 -type f -name "*."$2"" -exec grep $3 -l printf {} \;
Being a $1 a directory $2 the txt format and $3 the string to find occurences.
The output must be:
$1/file1.txt
3
$1/file2.txt
6
CodePudding user response:
If you want to count the occurrences, you need to use -c or long --count flag on the grep command.
Since you also want to print the file name, you can use -printf and use the %p placeholder, which is substituted for the path of the found item.
find "$1" -type f -name "*.txt" -printf "%p\n" -exec grep -c "$2" {} \;
CodePudding user response:
Suggesting feed find results into grep command. Than format the results with awk
grep -c "$3" $(find "$1" -name "*.$2") | awk '{print $1,$2}' FS=":" OFS="\\n"
