17

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?

2 Answers 2

29

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

Sign up to request clarification or add additional context in comments.

Comments

21

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}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.