bash 脚本:计算匹配过滤器的文本文件中行中的最大字符数

bash script : Count max characters in line across text files that match filter

想要一个 linux/ unix 脚本来告诉我目录树中任何行的最大字符数。

所以我可以指定一个根文件夹。它沿着它向下走并处理带有一些掩码的文件(如 *.java)- 一个查找命令......然后将最大字符保留在 var 的一行中并打印出来。

我看到了 this question,但我只想要最大值,而不必复制传播 sheet 或其他处理。

不要特定字符要考虑所有字符。

当前目录中所有 *java 文件中 return 字符数最多的行(将它们计算到 wc -c ):

perl -e 'while(<>){$l=length;  $l>$m && do {$c=$_; $m=$l}  } print $c' *.java

这与您的要求不完全相同,但这是一个很好的起点。

使用 find 命令:

find -type f -iname "*.java" -exec awk 'length([=10=])>a{a=length([=10=])} END{print FILENAME":"a}' {} \;

解释:

  • -type f 只喜欢文件
  • -iname "*.java" 只有以 .java
  • 结尾的文件
  • -exec awk 对每个文件执行 awk
    • length([=17=])>a{a=length([=17=])} 如果行的长度大于 a,则将 a 设置为该长度。
    • END{print FILENAME":"a}: 最后打印文件名和长度