Unix 计算每个目录中的行数

Unix 计算每个目录中的行数,unix,awk,xargs,wc,Unix,Awk,Xargs,Wc,我有一个目录结构如下 输出/a/1/多文件 输出/a/2/多文件 输出/a/3/多文件 输出/b/1/多文件 输出/b/2/多文件 输出/b/3/多文件 我想知道每个目录的行数。因此,基本上,每个最内层目录级别的行数,而不是文件级别的行数。最里面的目录1、2、3是我们为分析生成的不同类型的输出,其中包含多个hadoop part xxxx文件 我移动到输出目录并尝试了下面的命令 find . -maxdepth 2 -type d -name '*' | awk -F "/" 'NF==3' |

我有一个目录结构如下

输出/a/1/多文件
输出/a/2/多文件
输出/a/3/多文件
输出/b/1/多文件
输出/b/2/多文件
输出/b/3/多文件

我想知道每个目录的行数。因此,基本上,每个最内层目录级别的行数,而不是文件级别的行数。最里面的目录1、2、3是我们为分析生成的不同类型的输出,其中包含多个hadoop part xxxx文件

我移动到输出目录并尝试了下面的命令

find . -maxdepth 2 -type d -name '*' | awk -F "/" 'NF==3' | awk '{print $0"/*"}' | xargs wc -l
但我得到了一个错误

wc: ./a/1/*: No such file or directory
wc: ./a/2/*: No such file or directory
wc: ./a/3/*: No such file or directory
但是如果我尝试

wc -l ./a/1/*
我得到了该特定文件夹的正确输出

我错过了什么

编辑:

我更新了我的命令如下,以删除不必要的awk命令

 find . -mindepth 2 -maxdepth 2 -type d -name '*'  | xargs wc -l
这同样会导致错误

wc: ./a/1: Is a directory 
wc: ./a/2: Is a directory 
wc: ./a/2: Is a directory

尝试执行[code>execdir,例如:

find . -maxdepth 2 -type f -execdir wc -l {} \;
这将仅在找到该文件的目录中运行命令
wc-l{}
,从man:

 -execdir The -execdir primary is identical to the -exec primary with 
          the exception that utility will be executed from the 
          directory that holds the current file.

.a/1/*
不同于
/a/1/*
后的斜杠)。。。您能解释一下find输出上的awk命令的用途吗?
-mindepth
没有帮助吗?诸如
*
之类的全局通配符被xargs解释为原样,没有展开,因此出现了错误。您是否尝试对每个目录中所有文件中的行数求和,或者,您是在尝试计算每个目录中的文件数,还是在计算每个目录中的文件和目录数,或者其他?请将您的问题包含在简明、可测试的示例输入和预期输出中,以澄清您目前正在尝试执行的操作。我们需要尝试找出您想要执行的操作是一个脚本,该脚本不执行您想要执行的操作@EdMorton:每个最里面的子目录都是我们生成的某个分析文件的输出,这个最里面的目录有多个hadoop part xxxx文件,所以我需要计算每个分析文件填充的记录数,并需要发送该值以供进一步验证。@Sundeep:更新了我的qsn,谢谢。在find之后使用awk的目的是,当我运行find时,列出所有目录和子目录。是-mindepth将有助于排除最上面的目录。查找-mindepth 2-maxdepth 3-type f-execdir wc-l{};这部分起作用,但为每个值提供计数。是否有任何方法可以获取整个目录的计数,但不能获取单个文件的计数。@a Hinay可能会将输出传送到awk,例如:
|awk'{sum+=$1}END{print sum}'