Symfony Finder: поиск всех каталогов, кроме тех, которые начинаются с подчеркивания

Я хочу найти все каталоги (на корневом уровне, не рекурсивные), которые не начинаются с подчеркивания.

getcwd () = / Пользователи / пример / проект

Пример каталога:

/Users/example/project/_pictures
/Users/example/project/_graphics
/Users/example/project/test

Я пробовал с помощью следующего фрагмента кода:

$directories = $this->container->get('finder')
->directories()
->in(getcwd())
->notName('_*')
->depth(0);

Но это похоже на возвращение:

/Users/example/project/_pictures/home
/Users/example/project/test

Таким образом, он возвращает «тест», который является правильным, но он также возвращает подпапку внутри той, которая начинается с подчеркивания, что неверно. Есть идеи, что здесь не так?

3

Решение

Это работает:

$directories = glob(getcwd() . '/[!^_]*', GLOB_ONLYDIR);

Но надеялся на решение с использованием поиска Symfony.

1

Другие решения

Я нашел в Finder::searchInDirectory:

if (static::IGNORE_DOT_FILES === (static::IGNORE_DOT_FILES & $this->ignore)) {
$this->notPaths[] = '#(^|/)\..+(/|$)#';
}

Измените с этим, и это работает 🙂

$finder->notPath('#(^|/)_.+(/|$)#')

Обновить

Это мой код:

$finder = Finder::create()
->files()
->name('*.twig')
->notPath('#(^|/)_.+(/|$)#') // Ignore path start with underscore (_).
->ignoreVCS(true)
->ignoreDotFiles(true)
->ignoreUnreadableDirs()
->in(__DIR__);

foreach ($finder as $file) {
var_dump($file->getRelativePath());
}
1

Попробуйте с $ finder-> exclude ($ dirs);

0
По вопросам рекламы [email protected]