根据 hdfs 目录中的文件名计算文件数

Posted

技术标签:

【中文标题】根据 hdfs 目录中的文件名计算文件数【英文标题】:count number of files on basis of filename in hdfs directory 【发布时间】:2019-03-15 21:32:17 【问题描述】:

我有一个 HDFS 目录,其中包含一千多条记录,并且包含不同的文件名。我必须根据文件名计算文件。 由于我有数千个文件,我无法给出具体的文件名来计数。

例如目录包含以下文件

/a/b/a.txt

/a/b/b.txt

/a/b/c.txt

/a/b/a.txt

/a/b/b.txt

/a/b/c.txt

结果应该是

a.txt 2

b.txt 2

c.txt 2

【问题讨论】:

我认为文件夹中不可能有相同的文件名。 你是说a/a/a.txt, a/b/a.txt, ...? 【参考方案1】:

这绝不是一个有效的解决方案,但如果你只是想快速编写脚本,它会做:

find . -exec basename  \; | sort | uniq -c | sort

解释:

找到当前目录中的所有文件,并打印它们的basename(只是文件名,删除父目录)。要更改搜索的根,请指定路径而不是 . 排序列表按字母顺序(这是下一步工作所必需的) count 每个项目(uniq 的 -c 标志计算每次出现的次数) 对该列表进行排序以按升序查看。

在我的系统上,这给出了一些看起来像

  ... removed some output for clarity ...
  2 CMakeLists.txt
  2 heads
  2 hello
  2 info
  2 origin
  2 refs
  2 remotes
  2 test
  2 test.cpp
  4 .gitignore
  4 HEAD
  4 master
  5 Makefile

【讨论】:

我做错了什么...更正了...感谢您的帮助。

以上是关于根据 hdfs 目录中的文件名计算文件数的主要内容,如果未能解决你的问题,请参考以下文章

如何计算每个目录中的文件数?

从 Spark 估计要写入 HDFS 的部分文件数

计算Linux目录中的文件数? [关闭]

查找目录中的文件数

hdfs目录存储最大文件数异常MaxDirectoryItemsExceededException

sh 计算目录中的文件数(递归)