linux下如何统计一个目录下的文件个数以及代码总行数的命令

介绍Linux下使用grep命令显示上下文信息的方法

说白了:grep的上下文显示功能是基于-C/B/A这三个参数的,使用起来非常灵活。

首先我们来说说最重要的-C参数。
去年我们做了一个系统日志监控项目。
我们使用 grep -C3 “error”.log 来捕获所有异常及其前后的三行。
这比仅仅查看匹配线要容易得多。
数字3 可根据茎密度进行调整。
如果太长,感觉就像在看小说。
另请注意,对于只有 2 0 行的文件,-C5 只会显示全部内容,不会留空 6 行。
一开始以为-C参数是强行填的,后来发现不对劲,才明白了Linux务实的态度。

还有一个细节非常关键。
B 和 A 参数更像是 -C 的剪辑版本。
例如,当我们进行安全审计时,我们经常使用grep -B2 “fail”access.log。
我们只看每次出错前的两行操作记录,这样可以让我们更快地定位问题所在。
但很多人并没有注意到这一点。
B/A 保留匹配行本身,但 -C 不保留。
例如,如果文件只有 5 行,则 grep -C2 "ok" file 只显示第三行及其前后两行,而 grep -B2 "ok" file 显示第 1 、2 和 3 行。

等等,还有一件事:搜索多个文件时不要使用通配符。
权限问题确实很烦人。
我们有一个白痴同事,用grep -A1 "error" .log 查找了一半的匹配项,却发现通配符权限不够。

建议直接记住这三个参数,尤其是在调试脚本或者排查线上问题时。
上下文信息通常比一行匹配更有价值。
在处理大数据集时,你认为有必要给-C参数添加一个上限,以防止输出刷新屏幕吗?

如何在Linux命令行中统计文件内容?

说白了,从Linux命令行计算文件内容最常用的工具就是wc命令。
其实很简单。
它支持对行、单词和字符进行计数,还可以通过管道和其他命令处理复杂的需求。
我们先来说说最重要的事情。
wc 命令默认输出三列数据:行数、字数、字节数,最后是文件名。
例如,使用 wc file.txt 您将看到 1 05 03 00 file.txt。
这意味着该文件有 1 0 行、5 0 个字和 3 00 个字节。

另外,如果需要单独计算具体信息,可以通过选项提取。
例如,要计算行数,请使用 -l 选项。
wc -l file.txt 可以统计文件的行数。
要计算单词数,请使用 -w 选项。
wc -w file.txt 适合分析英文文本。
要计算字节数,请使用 -c 选项,并且 wc -c file.txt 与文件管理器中显示的字节大小匹配。

还有另一个关键细节:字符计数。
-m 选项支持 Unicode 字符,每个字符计为 1 ,而 -c 允许多字节字符计为多个字节。
例如,如果汉字“你好”采用UTF-8 编码,则wc -m的输出为2 ,wc -c的输出为6
一开始我以为统计大文件时会有效率问题,但后来发现我错了。
wc 命令直接读取文件速度非常快,即使处理 GB 大小的文件也不需要优化。

等一下,还有一件事:如果您需要计算目录中的文件数量,请使用 ls | wc -l 这将计算所有项目,包括隐藏文件。
如果您只想计算文件数并排除目录,可以使用 find 。
-最大深度 1 -类型 f |厕所-l。

最后,使用wc命令时要注意-c和-m的区别。
-c 计算受编码影响的字节数。
-m 对字符进行计数,每个 Unicode 字符计为 1 ,使其更适合多语言文本。
计算目录时还要注意边界条件,例如隐藏文件和符号链接。
我认为可能值得尝试的是结合 awk 来提取像 line_count=$(wc -l <​​ ​​​​file.txt) 这样的值,这样你就只能得到行数。