本文用到的Shell命令:
用grep匹配文件内容
1 2 3 4 5 6 7 8
| grep "" index.js
grep -v "^$" index.js
grep -R -v "^$" **/*.js
|
用wc统计行数
1 2
| grep -R -v "^$" **/*.js wc -l
|
使用find过滤文件
1 2
| 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那么灵活。
1 2 3 4 5
| find . -name "*.js" xargs wc -l
find . -name "*.js" xargs wc -l sort -n
|