在bash中包含和排除globbing模式

时间:2015-07-23 20:38:07

标签: php bash wildcard glob phpcodesniffer

我正在尝试使用PHPCompatibilityPHP 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/*

1 个答案:

答案 0 :(得分: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 {} +