计算每个目录中的行数

时间:2018-05-28 10:40:28

标签: unix awk xargs wc

我的目录结构如下

  

输出/一个/ 1 / multipleFiles
   输出/ A / 2 / multipleFiles
  输出/一个/ 3 / multipleFiles
   输出/ B / 1 / multipleFiles
  输出/ B / 2 / multipleFiles
   输出/ B / 3 / multipleFiles

我想知道每个目录的行数。所以基本上,每个最内层目录级别的行数而不是文件级别。最里面的目录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

1 个答案:

答案 0 :(得分:0)

尝试execdir,例如:

find . -maxdepth 2 -type f -execdir wc -l {} \;

这将仅在找到文件的目录中运行命令wc -l {}

 -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.