Grugnas
Grugnas

Reputation: 35

Occurrence of a string in all the file names within a folder in Bash

I am trying to make a script which allow me to select files with 2 or more occurrences of a string in their name.

Example:

test.txt      // 1 occurrence only, not ok
test-test.txt // 2 occurrences OK
test.test.txt // 2 occurrences OK

I want the script to return me only the files 2 and 3. I tried like that but this didn't work:

rows=$(ls | grep "test")
for file in $rows
do
        if [[ $(wc -w $file) == 2 ]]; then
                echo "the file $file matches"
        fi
done

Upvotes: 3

Views: 155

Answers (2)

John Kugelman
John Kugelman

Reputation: 361615

grep and wc are overkill. A simple glob will suffice:

*test*test*

You can use this like so:

ls *test*test*

or

for file in *test*test*; do
    echo "$file"
done

Upvotes: 3

Frank
Frank

Reputation: 881

You can use :

result=$(grep -o "test" yourfile | wc -l)

-wc is a word count

In shell script if $result>1 do stuff...

Upvotes: 0

Related Questions