подсчитать количество файлов на основе имени файла в каталоге hdfs - PullRequest
0 голосов
/ 16 марта 2019

У меня есть каталог HDFS с более чем тысячами записей, который содержит разные имена файлов. Я должен посчитать файлы на основе имени файла. Поскольку у меня есть тысячи файлов, я не могу дать конкретное имя файла для подсчета.

Например, каталог содержит следующие файлы

/ A / B / a.txt

/ а / б / b.txt

/ а / б / c.txt

/ A / B / a.txt

/ а / б / b.txt

/ а / б / c.txt

Результат должен быть

a.txt 2

b.txt 2

c.txt 2

1 Ответ

0 голосов
/ 16 марта 2019

Это ни в коем случае не эффективное решение, но если вы просто хотите быстро что-то написать, оно подойдет:

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

Пояснение:

  • найдите всех файлов в текущем каталоге и напечатайте их basename (только имя файла, удалите родительские каталоги). Чтобы изменить корень поиска, укажите путь, а не .
  • сортировка список в алфавитном порядке (это необходимо для работы следующего шага)
  • count каждый элемент (-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
...