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}
: 最后打印文件名和长度
想要一个 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}
: 最后打印文件名和长度