Другой вариант:
tar tf archive.tar |
awk '
{ if (gsub("[^/]+$", "")) { h[$0]++} }
END { for (f in h) { printf "%d\t%s\n", h[f], f } }
'
Первый оператор awk
удаляет имена файлов и подсчитывает экземпляры результирующих путей к каталогам. Второй запускается, когда ввод полностью использован (, то есть в конце стандартного ввода ), и печатает список путей и их соответствующие счетчики.
Все это можно уместить в одну строку, если вы предпочитаете (просто буквально соединить всю партию ). Я разделил его здесь для удобства чтения.
Результат работы с вашим архивом:
4 ./root_folder/subfolder/folder_files_2/
3 ./root_folder/subfolder/folder_files_1/