Включение и исключение шаблонов сглаживания в bash

Я пытаюсь использовать PHPCompatibility стандарт для PHP CodeSniffer проверить определенный набор файлов.

Я сейчас пользуюсь find сделать это.

find ./path1 ./path2 ./path3 ./path4                                                \
-type f                                                                         \
-name '*.php'                                                                   \
-not -path './path4/dontwantthis/*'                                             \
-exec ./vendor/bin/phpcs                                                        \
--standard=PHPCompatibility --runtime-set testVersion 5.6 {}                    \;

Однако это действительно медленно и неэффективно, потому что запуск сценария выполняется для каждого отдельного файла.

Скрипт phpcs принимает путь как ./vendor/bin/phpcs --standard=PHPCompatibility --runtime-set testVersion 5.6 <path-of-your-php-files> и я хотел бы найти способ воспроизвести find материал с шаблоном вместо <path-of-your-php-files>

Одной из основных проблем, с которыми я столкнулся, было ./path4/*.php в то же время исключая ./path4/dontwantthis/*

0

Решение

Конец вашего -exec вариант с + вместо \;, Что говорит find выполнить команду один раз со всеми именами файлов, а не отдельно для каждого имени файла.

find ./path1 ./path2 ./path3 ./path4                                                \
-type f                                                                         \
-name '*.php'                                                                   \
-not -path './path4/dontwantthis/*'                                             \
-exec ./vendor/bin/phpcs                                                        \
--standard=PHPCompatibility --runtime-set testVersion 5.6 {} +
0

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

Других решений пока нет …

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