#bash #shell
#bash #оболочка
Вопрос:
Используя сценарий оболочки, я хотел бы найти все каталоги в каталоге (не рекурсивно), которые начинаются с определенного префикса, а затем перебирать их. Пример псевдокода:
array directories = find('/etc/build', 'project-build-*');
foreach (string directory in directories)
{
// directory == 'project-build-example-x64'
do_something_with('/etc/build/' directory '/Makefile');
}
Ответ №1:
for dir in "/etc/build/project-build-"*/
do
do_something_with "$dir"Makefile
done
Комментарии:
1. Вау, это действительно интуитивно понятно! Спасибо.
2. В качестве продолжения это все равно выполняется один раз с самим шаблоном, если совпадений нет… как бы мне это исправить?
3. Установите
nullglob
параметр.shopt -s nullglob
4. Что приведет к тому, что цикл вообще не будет выполняться, если совпадений нет, правильно?
Ответ №2:
Вот альтернатива с find
и xargs
find /etc/build/project-build-*/ -maxdepth 1 -name Makefile | xargs do_something