С инструментами GNU:
find . -printf '%h\0' -type d ! -name . -print0 |
sort -z |
uniq -zc |
sort -zn |
sed -z q |
tr '\0' '\n'
Если можно гарантировать, что имена файлов не будут содержать символы новой строки, можно упростить его до:
find . -printf '%h\n' -type d ! -name . -print | sort | uniq -c | sort -n | head -n1
(число, о котором сообщают, является количеством файлов в каталоге минус 1 (.
считается, но нет ..
)).
С zsh
:
count() {
set -- $REPLY/*(NDoN)
REPLY=$#
}
print -r -- **/*(Do+count[1])