Вы можете загрузить debootstrap v1.0.93 с сайта snapshot.debian.org, но имейте в виду, что этот сайт не поддерживает шифрование, поэтому вам следует проверять свои загрузки.
http://snapshot.debian.org/package/debootstrap/1.0.93%2Bnmu3/
Если сайт выходит из строя (, что случается иногда ), проверьте Wayback Machine Интернет-архива на наличие кэшированной версии его содержимого.
Исходная версия
Вам нужно только выполнить одну проверку файловой системы для -type
интересующих вас файлов, а затем агрегировать по содержащей их папке и подсчитать.
find. -type f ! -type l 2>/dev/null | sed "s|/[^/]*$||g" | sort | uniq -c | awk '$1>=1000'
Использование эталонного показателя /etc
при пороговом значении 50
109.
96./apparmor.d/abstractions
138./ca-certificates/extracted/cadir
64./fonts/conf.avail
81./sane.d
58./xdg
real 0m0.014s
user 0m0.015s
sys 0m0.018s
Версия для контрразведки
Поскольку война, кажется, разразилась, я подумал, что лучше оптимизировать свой собственный арсенал и, в лучших традициях контрразведки военного времени, %h\n
возмутительно воровал.
find. -type f ! -type l -printf '%h\n' 2>/dev/null |
awk '{dir[$1]++}
END{for (d in dir) if (dir[d] >=50) print dir[d], d}'|
sort -g
58./xdg
64./fonts/conf.avail
81./sane.d
96./apparmor.d/abstractions
109.
138./ca-certificates/extracted/cadir
real 0m0.006s
user 0m0.005s
sys 0m0.005s
Поскольку время выполнения для этого меньше, чем мой возврат ключа для небольших каталогов, а вся моя (2 ТБ )файловая система обрабатывается за ~1,5 с, я думаю, что накладные расходы на ввод в мою пользу для на манжете один вкладыш -.
Хотя я любезно уступаю молниеносной скорости решения Glorious @haukelaging
;)
Постскриптум вся моя ФС
Мой
real 0m1.481s
user 0m0.975s
sys 0m0.805s
Той
real 0m1.586s
user 0m1.069s
sys 0m0.843s
Это кажется невозможным с tree
, но вы можете сделать это:
find. -type d -exec bash -c 'printf "%7d " '\
'$(find "$1" -mindepth 1 -maxdepth 1 -type f -not -type l -printf. | wc -m); '\
'printf "%s\n" "$1"' find {} \; 2>/dev/null |
awk '$1>1000'
Печатает номера файлов (, в данном случае только те, которые больше 1000 )и пути к каталогам.
Выполняется в моем /etc (с порогом количества файлов 50 )выводит это:
175 .
70 ./sysconfig
98 ./apparmor.d/abstractions
84 ./gconf/gconf.xml.schemas
122 ./brltty/Text
76 ./sane.d
Ответ bu5hman заставил меня понять, что я не заметил, насколько это медленно.
Итак, это оптимизированная версия другого подхода:
find. -type f -not -type l -printf '%h\n' 2>/dev/null |
awk -v th=50 '{ a[$0]++; }; '\
'END { PROCINFO["sorted_in"]="@unsorted"; for (key in a) if (a[key]<th) delete a[key];'\
' PROCINFO["sorted_in"]="@val_num_desc";for (key in a) printf "%7d %s\n",a[key],key }'
175 .
122 ./brltty/Text
98 ./apparmor.d/abstractions
84 ./gconf/gconf.xml.schemas
76 ./sane.d
70 ./sysconfig
awk
умеет не только фильтровать, но и подсчитывать и сортировать. И он может делать это в правильном порядке :считать, фильтровать, сортировать. В то время как сортировка, подсчет, хранение — худшее. Конечно, это имеет значение только с огромными номерами каталогов, тогда как разница между
замечательно даже с 400+ каталогами в /etc и (возможно )100% попаданием в кэш страниц для подпроцессов.