Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将更多文件的行数与文件名合并_Linux_Shell_Ubuntu_Terminal - Fatal编程技术网

Linux 将更多文件的行数与文件名合并

Linux 将更多文件的行数与文件名合并,linux,shell,ubuntu,terminal,Linux,Shell,Ubuntu,Terminal,指定一个命令/命令集,用于显示当前目录中.c和.h文件中的代码行数,按字母顺序显示每个文件,后跟“:”和文件中的行数,最后显示代码行总数。 可能显示的示例如下: test.c: 202 example.c: 124 example.h: 43 Total: 369 我想找到一个尽可能短的解决办法。我尝试过许多命令,如: find-名称'*.c'-o-name'*.h'| xargs wc-l ==它显示0./path/test.c和总数,但不够接近 stat-c“%n:%s”* ==它显示te

指定一个命令/命令集,用于显示当前目录中.c和.h文件中的代码行数,按字母顺序显示每个文件,后跟“:”和文件中的行数,最后显示代码行总数。
可能显示的示例如下:

test.c: 202
example.c: 124
example.h: 43
Total: 369
我想找到一个尽可能短的解决办法。我尝试过许多命令,如:

  • find-名称'*.c'-o-name'*.h'| xargs wc-l

    ==它显示
    0./path/test.c
    和总数,但不够接近
  • stat-c“%n:%s”*

    ==它显示
    test.c:0
    ,但它显示所有文件类型,不显示行数或总数
  • wc-l*.c*.h | tr'\:

    ==它显示
    0:test.c
    和总数,但不在子目录中搜索,与问题相反(
    文件名:行数

    这一个更接近于答案,但在搜索了我在类似问题中看到的大多数命令后,我已经没有主意了。

    xargs

    xargs -n1 sh -c 'printf "%s: %s\n" "$1" "$(wc -l <"$1")"' --
    xargs -n1 sh -c 'echo "$1 $(wc -l <"$1")"' --
    
    xargs-n1 sh-c'printf“%s:%s\n”“$1”“$(wc-l这应该可以:

    wc -l *.c *.h | awk '{print $2 ": " $1}'