Для подсчета переменных в проекте PHP вы можете использовать variable regex
, определенный here.
Таким образом, следующий будет Grep все переменные для каждого файла:
cd ~/my/php/project
grep -Pro '\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' .
-P - use perlish regex
-r - recursive
-o - each match on separate line
будет производить что-то вроде:
./elFinderVolumeLocalFileSystem.class.php:$path
./elFinderVolumeLocalFileSystem.class.php:$path
./elFinderVolumeMySQL.class.php:$driverId
./elFinderVolumeMySQL.class.php:$db
./elFinderVolumeMySQL.class.php:$tbf
Вы хотите сосчитать, так что вы можете использовать:
$ grep -Proc '\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' .
и получите count of variables in each file
, например:
./connector.minimal.php:9
./connector.php:9
./elFinder.class.php:437
./elFinderConnector.class.php:46
./elFinderVolumeDriver.class.php:1343
./elFinderVolumeFTP.class.php:577
./elFinderVolumeFTPIIS.class.php:63
./elFinderVolumeLocalFileSystem.class.php:279
./elFinderVolumeMySQL.class.php:335
./mime.types:0
./MySQLStorage.sql:0
Когда хотят рассчитывать by file and by variable
, вы можете использовать:
$ grep -Pro '\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' . | sort | uniq -c
для получения результата, как:
17 ./elFinderVolumeLocalFileSystem.class.php:$target
8 ./elFinderVolumeLocalFileSystem.class.php:$targetDir
3 ./elFinderVolumeLocalFileSystem.class.php:$test
97 ./elFinderVolumeLocalFileSystem.class.php:$this
1 ./elFinderVolumeLocalFileSystem.class.php:$write
6 ./elFinderVolumeMySQL.class.php:$arc
3 ./elFinderVolumeMySQL.class.php:$bg
10 ./elFinderVolumeMySQL.class.php:$content
1 ./elFinderVolumeMySQL.class.php:$crop
, где вы можете увидеть, чем переменная $write
используется только один раз, так что (может быть) бесполезно.
Вы также можете рассчитывать per variable per whole project
$ grep -Proh '\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' . | sort | uniq -c
и получите что-то вроде:
13 $tree
1 $treeDeep
3 $trg
3 $trgfp
10 $ts
6 $tstat
35 $type
, где вы можете увидеть, чем $treeDeep
используется только один раз в целом проект, поэтому он уверен, бесполезный.
Вы можете достичь многих других комбинаций с различными grep
, sort
и uniq
команды ..
Пожалуйста, перефразировать ваш вопрос - каталоги не содержат символы - файлы делают. Вы хотите считать '$' в наборе файлов в каком-то каталоге? –
Что вы хотите сделать точно? Учитывать ли в файле определенные символы? Или имена файлов в каталоге? Ваш заголовок говорит одно, а ваша команда говорит что-то другое. – SuperSaiyan
Я попытался добавить более подробную информацию к вопросу. Но я хочу считать $ s ind набором файлов в некотором директивном – EvilKarter