Для цикла для файлов в нескольких папках - оболочка bash - PullRequest
8 голосов
/ 25 мая 2011

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

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

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

Заранее спасибо

Ответы [ 2 ]

17 голосов
/ 25 мая 2011

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

9 голосов
/ 25 мая 2011

Вы можете задать несколько «слов» для 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...