Я действительно зависит от того, где вам нужно искать каталоги. Если вам просто нужно проверить, есть ли в одном каталоге pkg_...
именованные каталоги, то вы можете использовать цикл for
, циклически проходящий по каталогам в данном каталоге, как указывает IObO в своем ответе.
Если, однако, вам нужно искать во всех подкаталогах данного каталога каталоги с именем pkg_...
, то использование find
предоставляет удобную опцию. В bash вы можете использовать процесс подстановки для подачи имен каталогов, соответствующих вашим критериям, в цикл while
, например
while read -r pkgdir; do
## do what you need with "$pkgdir"
done < <(find /path -type d -name "pkg_*")
( примечание: необходим пробел между < <
)
Команда find
найдет все каталоги -type d
ниже /path
, где имя соответствует глобу "pkg_*"
. Они будут прочитаны циклом while
в переменную pkgdir
. Затем вы можете обработать каталог в "$pkgdir"
любым необходимым способом.
Вы также можете использовать опцию -exec
, чтобы найти для выполнения любую требуемую команду или для вызова другого сценария в каждом каталоге. Вы также можете перенаправить результаты в xargs
и выполнить то же самое (предложите использовать -print0
в find
для вывода имен каталогов с нулевым символом в конце и параметр -0
для xargs
, чтобы указать то же самое)
Дайте мне знать, если у вас есть другие вопросы.