Com ferramentas GNU:
find . -printf '%hfind . -printf '%h\n' -type d ! -name . -print | sort | uniq -c | sort -n | head -n1
' -type d ! -name . -print0 |
sort -z |
uniq -zc |
sort -zn |
sed -z q |
tr 'count() {
set -- $REPLY/*(NDoN)
REPLY=$#
}
print -r -- **/*(Do+count[1])
' '\n'
Se você puder garantir que os nomes dos arquivos não conterão caracteres de nova linha, você poderá simplificá-lo para:
find . -printf '%hfind . -printf '%h\n' -type d ! -name . -print | sort | uniq -c | sort -n | head -n1
' -type d ! -name . -print0 |
sort -z |
uniq -zc |
sort -zn |
sed -z q |
tr 'count() {
set -- $REPLY/*(NDoN)
REPLY=$#
}
print -r -- **/*(Do+count[1])
' '\n'
(o número informado é o número de arquivos no diretório menos 1 ( .
é contado, mas não ..
)).
com zsh
: