@zece14
Devops Engineer

Как выполнить скрипт в каталоге, а только потом переходить на следующий каталог в баше?

Есть кусочек скрипта который проходится по всем каталогам (f - содержит все каталоги) и выгружает из них файлы на сервер, на данный момент он выгружает во всех каталогах одновременно, как минимум перебирая папки хаотично, а мне надо, чтобы сперва зашел в один, выгрузил, и только после этого перешел на другую.

for f in ./*/; do
            if [[ $f =~ $regex ]]; then
                folder="${BASH_REMATCH[1]}-${BASH_REMATCH[2]}-${BASH_REMATCH[3]} ${BASH_REMATCH[4]}"
                videoDate=$(date -d "$folder" +%s)

                if [[ "$videoDate" -ge "$videoDateFilter" ]]; then
                    echo "$f"
                else
                    continue
                fi

                find "$f" -name '*.mp4' -o -name '*.mkv' -type f -mmin +180 | xargs ls -t | head -1 | while read -a line; do
......
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
@DmitrySolomennikov
Вопрос сформулирован не очень точно.

Если вы предполагаете порядок обхода папок, тогда список папок надо сначала сформировать, а не просто делать цикл по всем файлам.

Т.е. должно быть не for f in ./*/; do, а что-то вроде for f in $FOLDERS, где $FOLDERS - это переменная, куда предварительно собраны и отсортированы в нужном порядке папки из заданного каталога.
Можно использовать конструкцию if [[ -d $f ]] или ее аналог для проверки, что проверяемое существует и является каталогом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы