fanjabi
fanjabi

Reputation: 1675

For loop for files in multiple folders - bash shell

I need to have files from many directories in a for loop. As for now, I have the following code:

for f in ./test1/*;
...
for f in ./test2/*;
...
for f in ./test3/*;
...

In each loop I'm doing the same thing. Is there a way to get files from multiple folders?

Upvotes: 17

Views: 23595

Answers (2)

PhilR
PhilR

Reputation: 5602

You can give multiple "words" to for, so the simplest answer is:

for f in ./test1 ./test2 ./test3; do
  ...
done

There are then various tricks to reduce the amount of typing; namely globbing and brace expansion.

# the shell searchs for matching filenames 
for f in ./test?; do 
...
# the brace syntax expands with each given string
for f in ./test{1,2,3}; do
...
# same thing but using integer sequences
for f in ./test{1..3}

Upvotes: 21

evgeny
evgeny

Reputation: 2584

Try for f in ./{test1,test2,test3}/* or for f in ./*/* depending on what you want.

Upvotes: 29

Related Questions