只想计算文件夹中所有文件的总行数。以下php函数帮助我只计算特定文件的行号。只是想知道文件夹中总行数的方法是什么。
$lines = COUNT(FILE($file));
谢谢。!
答案 0 :(得分:1)
您可以迭代目录并计算每个文件并将它们全部加起来。并且你正在使用file()
函数,它会将整个内容加载到内存中,如果文件非常大,你的php脚本将达到配置的内存限制。
如果您可以使用外部命令,则有一行解决方案。 (如果您使用的是Windows,请忽略它。)
$total = system("find $dir_path -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'");
答案 1 :(得分:0)
或许这样的事情:
<?php
$line_count = 0;
if ($handle = opendir('some/dir/path')) {
while (false !== ($entry = readdir($handle))) {
if (is_file($entry)) {
$line_count += count(file($entry));
}
}
closedir($handle);
}
var_dump($line_count);
?>
答案 2 :(得分:0)
查看DirectoryIterator的标准PHP库(又名SPL):
$dir = new DirectoryIterator('/path/to/dir');
foreach($dir as $file ){
$x += (isImage($file)) ? 1 : 0;
}
(仅供参考,有一个名为iterator_count()的未记录函数,但我现在最好不要依赖它。而且你需要过滤出看不见的东西,比如。和..无论如何。)
或试试这个: -
请参阅网址: - http://www.brightcherry.co.uk/scribbles/php-count-files-in-a-directory/
$directory = "../images/team/harry/";
if (glob($directory . "*.jpg") != false)
{
$filecount = count(glob($directory . "*.jpg"));
echo $filecount;
}
else
{
echo 0;
}
答案 3 :(得分:0)
计算线条的一个非常基本的例子可能类似于以下内容,它提供与xdazz's answer相同的数字。
<?php
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__));
$lines = $files = 0;
foreach ($files as $fileinfo) {
if (!$fileinfo->isFile()) {
continue;
}
$files++;
$read = $fileinfo->openFile();
$read->setFlags(SplFileObject::READ_AHEAD);
$lines += iterator_count($read) - 1; // -1 gives the same number as "wc -l"
}
printf("Found %d lines in %d files.", $lines, $files);
另见
答案 4 :(得分:0)
与上面的一个(salathe的答案)相同,除了这个打印行数(现在在php7中)而不是一堆错误消息。
$files = new RecursiveIteratorIterator(new
RecursiveDirectoryIterator(__DIR__));
$lines = 0;
foreach ($files as $fileinfo) {
if (!$fileinfo->isFile()) {
continue;
}
$read = $fileinfo->openFile();
$read->setFlags(SplFileObject::READ_AHEAD);
$lines += iterator_count($read) - 1; // -1 gives the same number as "wc -l"
}
echo ("Found :$lines");