UNIX:如何计算多个没有标题的文件中的行数

tquggr8v  于 2022-11-23  发布在  Unix
关注(0)|答案(2)|浏览(160)

我有一组具有类似命名模式的文件。我试图一次得到所有文件的总行数。但是我在使用命令时遇到了麻烦。
我试过:
sed '1d' IN-Pass-30* | wc -l

awk 'END {print NR-1}' IN-Pass-30*
但是每次它只从一个文件中减去头数。我在这里做错了什么?

z9smfwbn

z9smfwbn1#

您已经很接近了。将sed命令封装在bash glob循环中:

for f in IN-Pass-30*; do sed '1d' "$f"; done | wc -l
2skhul33

2skhul332#

我提出以下“简单”的解决方案:

Prompt> find ./ -maxdepth 1 -name "IN-Pass-30*" | wc -l
53
Prompt> cat IN-Pass-30* | wc -l
1418549
Prompt> echo $(($(cat IN-Pass-30* | wc -l) - $(find ./ -maxdepth 1 -name "IN-Pass-30*" | wc -l)))
1418496

这是什么意思?

Prompt> find ./ -maxdepth 1 -name "IN-Pass-30*" | wc -l
// find all files inside that directory without checking subdirectories.
// once they are found, count them.

Prompt> cat IN-Pass-30* | wc -l
// use `cat` to concatenate all files' content.
// at the end, count the amount of lines.

Prompt> echo $$(a - b))
// calculate the difference between a and b.

Prompt> echo $(command)
// show (or do whatever with it) the result of a command

哦,整个想法是每个文件一个标题占一行,所以通过计算所有文件中的行数,减去文件数(与标题行数相同),应该得到所需的结果。

相关问题