您的浏览器不支持CSS3,建议使用Firfox、Chrome等浏览器,以取得最佳显示效果

find和grep命令统计代码行数及原理

开发技术 699℃ 0 7个月前 (03-03)

摘要

find和grep命令统计代码行数及原理。

本文用到的Shell命令:

  • grep
  • find
  • wc
  • xargs
  • sort

用grep匹配文件内容

# 这条命令会把index.js内容全部输出来,因为每行都匹配
grep "" index.js

# 这条命令会把index.js非空行的内容输出来,"^$"匹配所有空行,-v表示翻转匹配,所以每个非空行被匹配并输出
grep -v "^$" index.js

# 这条命令会把当前目录和子目录下所有js文件非空行的内容输出来,-R表示递归子目录
grep -R -v "^$" **/*.js

用wc统计行数

# 通过管道将内容传递给wc,统计js代码行数
grep -R -v "^$" **/*.js | wc -l

使用find过滤文件

# 使用find列出所有扩展名为m和h的文件,通过管道和xargs传递给grep,然后统计代码行数
find . -name "*.m" -or -name "*.h" | xargs grep -v "^$" | wc -l

xargs的作用:

  • xargs把find输出的内容转换为命令行参数传递给grep。例如find输出的内容是main.js \n test.js,则find输出的每一行(即每个文件)都会调用一次grep,也就是grep main.js, grep test.js,输出每个文件中匹配的内容,最后由wc计算总行数。
  • 如果不用xargs,grep会把find输出的文件列表当做要搜索的内容,最后统计的是文件列表的行数(只会调用一次grep),也就是文件的个数。

直接用find统计行数

直接用find也可以统计行数,但是只能统计文件中所有内容(包括空行)的行数,没有用grep那么灵活。

# 统计每个文件的行数和总行数,包含空行
find . -name "*.js" | xargs wc -l

# 统计每个文件的行数和总行数,包含空行,最后按行数排序
find . -name "*.js" | xargs wc -l | sort -n

最后,欢迎扫码关注微信公众号。微软 / Shopee / Coupang / BAT等国内外企业内推、行业和技术交流,也可以加我微信 jzj2015(注明来自博客),拉你进技术群。

本文由原创,转载请注明来源:https://www.paincker.com/shell-count-code-lines
(标注了原文链接的文章除外)

0

暂无评论

评论前:需填写以下信息,或 登录

用户登录

忘记密码?