我有一个日志文件,其中包含整个服务器的流量。服务器服务于多个域,但我知道我想要计算的所有PDF文件都在/ some / directory /中。
我知道如果我为'pdf'扩展名grep该目录,我可以得到我想要的所有PDF文件的列表。
如何计算从命令行单独访问每个PDF的次数?
答案 0 :(得分:2)
这比一行长一点,但它会给你一个更好的总结。您可以使用pdfs和apache access_log文件的路径修改它,只需将其粘贴到命令行或将其放在bash脚本中
for file in `ls /path/to/pdfs | grep pdf `
do
COUNT=`grep -c $file access_log`
echo $file $COUNT
done
答案 1 :(得分:1)
Grep获取日志中pdf文件的名称,并使用-c
选项计算出现次数。例如:
grep -c myfile.pdf apache.log
如果您有数百个文件,请创建一个包含所有文件名列表的文件,例如
$ cat filelist.txt
foo.pdf
bar.pdf
然后在循环中使用grep
while read filename
do
COUNT=$(grep -c $filename apache.log)
echo $filename:$COUNT
done < filelist.txt
这将打印出每个pdf文件在日志中出现的次数。
答案 2 :(得分:-2)
使用grep
标识带有pdf的行,然后使用wc -l
来计算找到的行数:
grep /your/pdf logfile | wc -l
您也可以检查302响应,即302,即如果用户只访问过一个页面或完整文档(某些pdf阅读器一次只加载一页)