在保留文件名的同时在unix中为"wc"管道文件

1 unix bash scripting pipe

我有一堆myfile[somenumber]嵌套目录中的表单文件.

我想在每个文件上生成行数,并将该计数输出到文件.

这些文件是二进制文件,因此必须通过其他脚本传送open_file它们才能通过"wc"进行计数.我做:

ls ~/mydir/*/*/other_dir/myfile* | while read x; do open_file $x | wc -l; done > stats
Run Code Online (Sandbox Code Playgroud)

这是有效的,但问题是它将行计数输出到文件stats而不说原始文件名.例如,它输出:

100
150
Run Code Online (Sandbox Code Playgroud)

代替:

/mydir/...pathhere.../myfile1: 100
/mydir/...pathhere.../myfile2: 150
Run Code Online (Sandbox Code Playgroud)

第二个问题:

如果我想将数字wc -l除以常数,例如除以4,然后将其输出到文件中,该怎么办?

我知道行数是4的倍数,因此结果应该是整数.不知道如何从上面的脚本中做到这一点.

如何将原始文件名和wc -l结果放在输出文件中?

谢谢.

Ray*_*Ray 5

您可以在计算行之前输出文件名: echo -n "$x: " ; open_file $x | wc -l.-n用于echo省略输出中尾随换行符的参数.

要划分整数,您可以使用expr,例如,expr $(open_file $x | wc -l) / 4.

因此,完整的while循环将如下所示:

while read x; do echo -n "$x: " ; expr $(open_file $x | wc -l) / 4 ; done
Run Code Online (Sandbox Code Playgroud)