Цикл For для файлов в нескольких папках — оболочка bash

#linux #bash #loops #for-loop

#linux #bash #циклы #цикл for

Вопрос:

Мне нужно иметь файлы из многих каталогов в цикле for. На данный момент у меня есть следующий код:

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

В каждом цикле я делаю одно и то же. Есть ли способ получить файлы из нескольких папок?

Ответ №1:

Попробуйте for f in ./{test1,test2,test3}/* или for f in ./*/* в зависимости от того, что вы хотите.

Ответ №2:

Вы можете указать несколько «слов» для for , поэтому самый простой ответ:

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

Затем существуют различные приемы для уменьшения объема ввода; а именно, изменение масштаба и расширение в фигурных скобках.

 # 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}