For loop for files in multiple folders - bash shel

2020-03-01 18:02发布

问题:

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

回答1:

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



回答2:

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}