Если prefix=/home/foo/usr
не работает, пробуют:
CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure
С инструментами 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])
Вы могли использовать что-то вроде этого:
find . -type d -exec sh -c \
'printf -- "%-20s: " {};
find {} -maxdepth 1 -type f -printf "%i\n" | wc -l' \;
Если у Вас есть это дерево, (tree
хорошая команда btw.):
$ tree -a .
.
├── bar
│ ├── B
│ └── tmp2.txt
├── ff
├── .ff.swp
└── foo
├── A
│ └── tmp3.txt
├── f2.txt
├── f3.txt
└── tmp.txt
Вы получаете это:
. : 2
./foo : 3
./foo/A : 1
./bar : 1
./bar/B : 0
Для списка одного из меньших (больше затем можно было иметь, например, пустые файлы) можно было сделать что-то как:
find . -type d -exec sh -c \
'find "{}" -maxdepth 1 -type f -printf "%i\n" | \
wc -l | xargs printf "%-2d";
printf ": %s\n" "{}" ' \; | sort -k1,1 | head -n 1
если папки не содержат новую строку.
Если -maxdepth
не доступно, альтернатива могла быть:
find . -type d -exec sh -c \
'printf -- "%-20s: " "{}";
find "{}" ! -wholename "{}" -prune -type f -printf "%i\n" | wc -l' \;