Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

Thanks in advance

like image 875
fanjabi Avatar asked May 25 '11 09:05

fanjabi


2 Answers

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}
like image 163
PhilR Avatar answered Sep 23 '22 15:09

PhilR


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

like image 34
evgeny Avatar answered Sep 23 '22 15:09

evgeny