我想计算此目录及其所有子目录中所有文件的行数,但排除目录“public”、“modules”和“templates”。
如何?
答案1
find . -type f |grep -v "^./public" |grep -v "^./modules"|grep -v "^./templates"|xargs cat |wc -l
- 使用以下命令列出当前目录下的所有文件
find . -type f
- 使用 grep -v 从“排除”目录中过滤出文件
xargs
将从 stdin 读取文件列表并将所有文件作为选项传递给cat
。cat
将所有文件打印到标准输出- wc 会计算行数。
如果要分别计算每个文件中的行数,请更改xargs cat |wc -l
为xargs wc -l
答案2
find . -type d \
\( -path ./public -o -path ./modules -o -path ./templates \) -prune \
-o -type -f -print0 | xargs -0 wc