Summitch
Summitch

Reputation: 379

Bash: iterate through files based on regex parameter

There are several posts about iterating through bash files like this:

count_files() {
    count=0

    for f in "filename_*.txt"
    do
        count=$(($count + 1))
    done
    echo "Current count:$count"
}

I need to pass in "filename_*.txt" as a param when calling the bash script. Like this:

$: count_files.sh "filename_*.txt"

$: count_files.sh "different_filename_*.txt"

This, however, only gets the first file:

count_files() {
    count=0

    for f in $1
    do
        count=$(($count + 1))
    done
    echo "Current count:$count"
}

How do I pass in a regex param and iterate through it?

NOTE: counting the files is just an example. If you have a simple way to do that, please share, but that's not the main question.

Upvotes: 1

Views: 1880

Answers (1)

anubhava
anubhava

Reputation: 785246

Inside count_files.sh script make sure you call function with quotes like this:

count_files "$1"

instead of:

count_files $1

Later will get you count=1 because wildcard will be expanded before function call to the first file name.

Upvotes: 1

Related Questions