关于bash:如何使用或运算符递归计算目录中的所有代码行以包含多种文件类型

How to count all the lines of code in a directory recursively using or operator to include several file types

我正在阅读这个答案:如何递归地计算目录中的所有代码行?

但它只适用于PHP文件。我想递归地计数,包括javascript、html、css和php文件,以获得代码组合行的总数。

我试过这个

但它不起作用。

注意:我使用的是OS X El Capitan。


避免使用xargs

1
find \( -name '*.php' -o -name '*.js' -o -name '*.html' \) -exec wc -l {} +
  • \( \)分组,使所有结果都交给wc命令
  • \( \)中按要求添加任意数量的-o -name
  • iname代替name忽略文件名的大小写
  • 默认情况下,find在当前目录下工作

参考文献:

  • https://unix.stackexchange.com/questions/12902/how-to-run-find-exec
  • https://unix.stackexchange.com/questions/24954/when-is-xargs-needed
  • https://unix.stackexchange.com/questions/131766/Why do my shell script choke on whitespace or other special characters/131767_131767


这是一条单行线。它使用findregex选项查找匹配的扩展名,用wc--files0-from=-参数从标准输入中获取文件列表。

1
find -regex '.*\(php\|js\|css\|html?\)' -printf '%p\0' |wc -l --files0-from=-


给这个:

find . -name '*.php' | xargs wc -l

包含文件:

find . -name '*.php' -o -name '*.js' | xargs wc -l

不包括某些路径:

find . -name"*.php" -not -path"./tests*" | xargs wc -l