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

Bash 根据hdfs目录中的文件名统计文件数,bash,shell,apache-spark-sql,hdfs,Bash,Shell,Apache Spark Sql,Hdfs,我有一个HDFS目录,有超过1000条记录,其中包含不同的文件名。我必须根据文件名数数文件。 因为我有上千个文件,所以我不能给出具体的文件名 例如,目录包含以下文件 /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决不是一个有效的解决方案,但如果您只是想快速编写脚本,它可以: find . -exec basename {} \; | sort |

我有一个HDFS目录,有超过1000条记录,其中包含不同的文件名。我必须根据文件名数数文件。 因为我有上千个文件,所以我不能给出具体的文件名

例如,目录包含以下文件

/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决不是一个有效的解决方案,但如果您只是想快速编写脚本,它可以:

find . -exec basename {} \; | sort | uniq -c | sort
说明:

  • 查找当前目录中的所有文件,并打印其基本名称(仅文件名,删除父目录)。要更改搜索的根目录,请指定路径,而不是
  • 按字母顺序对列表排序(这是下一步工作所必需的)
  • 计数每个项目(-c
    uniq的标志
    统计每个事件)
  • 按升序排列要查看的列表
在我的系统中,这给出了

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

我认为文件夹中不可能有相同的文件名。你是说
a/a/a.txt
a/b/a.txt
,…?我做错了…更正了…谢谢你的帮助。