-exec wc -l {} \; 打印了行数和路径,我只需要行数。

3
Lines=(find $FILEDIRECTORY -iname "*$FILEENDING" -exec wc -l {} \;)


用户可以输入路径和文件结尾,程序会统计每个程序有多少行代码。如果用户只键入 wc -l 命令,它会输出拥有该文件结尾的文件数,但我需要的是:
100
78
45

因此,从每个文件中提取出这些行。


我想使用这个数组和另一个计算有单行注释的行数的数组,但是这个代码段并没有起作用:#counts the percentage of commentslines for (( i=0; i < ${#Lines[]}; i++ )); do Percentage[i]=$((100Comments[i]/Lines[i])) echo ${Percentage[i]} done 你有没有任何想法为什么它不工作? - user14636593
1个回答

1
你可以这样使用它:

find $FILEDIRECTORY -iname "*$FILEENDING" -exec \
sh -c 'for f; do wc -l < "$f"; done' _ {} +

请理解:
  • wc -l < file 只打印行数而不带文件名
  • exec 后面的 +\; 更有效率,因为 find 会尝试将多个文件作为参数传递。
  • for ffor f in "$@" 的简写形式

另一种解决方案:
find $FILEDIRECTORY -iname "*$FILEENDING" -exec grep -hc '^' {} +

如果您的“find”中无法使用“+”,则使用以下代码:

<code>

find $FILEDIRECTORY -iname "*$FILEENDING" -exec grep -hc '^' {} \;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接