Необходимо взглянуть на LinuxWireless и serialmonkey. Там у Вас уже есть огромный список аппаратных средств.
Если бы Вам нужен привилегированный режим, я рекомендовал бы NICs с чипсетом Ralink. Однако необходимо включать non-free
репозиторий, так как встроенное микропрограммное обеспечение не свободно. (Вы не должны платить за встроенное микропрограммное обеспечение.)
Другая опция, которая не полагается на propretary встроенное микропрограммное обеспечение, состояла бы в том, чтобы использовать некоторые устройства с, например, rtl8187 чипсет. Они работают out-of-the-box.
И существуют десятки других чипсетов, которые работают отлично. Но у меня нет опыта сказать Вам который. Просто взгляните на страницы, с которыми я связался, они даже упоминают конкретные бренды и модели.
Использование инструментов GNU:
find / -xdev -type d -print0 |
while IFS= read -d '' dir; do
echo "$(find "$dir" -maxdepth 1 -print0 | grep -zc .) $dir"
done |
sort -rn |
head -50
Здесь используются две команды find
. Первый находит каталоги и направляет их в , а цикл
выполняет следующий поиск для каждого каталога. Во втором перечислены все дочерние файлы / каталоги первого уровня, в то время как grep
считает их. grep
позволяет использовать -print0
со второй находкой, поскольку wc
не имеет эквивалента -z
. Это предотвращает подсчет имен файлов с новой строкой дважды (хотя использование wc
и no -print0
не будет иметь большого значения).
Результат второго find
помещается в аргумент echo
, поэтому его и имя каталога можно легко разместить в одной строке ( $ (. .) Конструкция
автоматически обрезает новую строку в конце grep
). Затем строки сортируются по номерам, и 50 самых больших номеров отображаются с заголовком
.
Обратите внимание, что это также будет включать каталоги верхнего уровня точек монтирования. Простой способ обойти это - использовать привязку монтирования, а затем использовать каталог монтирования. Для этого:
sudo mount --bind / /mnt
Более переносимое решение использует разные экземпляры оболочки для каждого каталога (также ответили здесь ):
find / -xdev -type d -exec sh -c '
echo "$(find "$0" | grep "^$0/[^/]*$" | wc -l) $0"' {} \; |
sort -rn |
head -50
9225 /var/lib/dpkg/info
6322 /usr/share/qt4/doc/html
4927 /usr/share/man/man3
2301 /usr/share/man/man1
2097 /usr/share/doc
2097 /usr/bin
1863 /usr/lib/x86_64-linux-gnu
1679 /var/cache/apt/archives
1628 /usr/share/qt4/doc/src/images
1614 /usr/share/qt4/doc/html/images
1308 /usr/share/scilab/modules/overloading/macros
1083 /usr/src/linux-headers-3.13-1-common/include/linux
1071 /usr/src/linux-headers-3.13-1-amd64/include/config
847 /usr/include/qt4/QtGui
774 /usr/include/qt4/Qt
709 /usr/share/man/man8
616 /usr/lib
611 /usr/share/icons/oxygen/32x32/actions
608 /usr/share/icons/oxygen/22x22/actions
598 /usr/share/icons/oxygen/16x16/actions
579 /usr/share/bash-completion/completions
574 /usr/share/icons/oxygen/48x48/actions
570 /usr/share/vim/vim74/syntax
546 /usr/share/scilab/modules/m2sci/macros/sci_files
531 /usr/lib/i386-linux-gnu/wine/wine
530 /usr/lib/i386-linux-gnu/wine/wine/fakedlls
496 /etc/ssl/certs
457 /usr/share/mime/application
454 /usr/share/man/man2
450 /usr/include/qt4/QtCore
443 /usr/lib/python2.7
419 /usr/src/linux-headers-3.13-1-common/include/uapi/linux
413 /usr/share/fonts/X11/misc
413 /usr/include/linux
375 /usr/share/man/man5
374 /usr/share/lintian/overrides
372 /usr/share/cmake-2.8/Modules
370 /usr/share/fonts/X11/75dpi
370 /usr/share/fonts/X11/100dpi
356 /usr/share/icons/gnome/24x24/actions
356 /usr/share/icons/gnome/22x22/actions
356 /usr/share/icons/gnome/16x16/actions
353 /usr/share/icons/gnome/48x48/actions
353 /usr/share/icons/gnome/32x32/actions
341 /usr/lib/ghc/ghc-7.6.3
326 /usr/sbin
324 /usr/share/scilab/modules/compatibility_functions/macros
324 /usr/share/scilab/modules/cacsd/macros
320 /usr/share/terminfo/a
319 /usr/share/i18n/locales
du --inodes -S | sort -rh | sed -n \
'1,50{/^.\{71\}/s/^\(.\{30\}\).*\(.\{37\}\)$/\1...\2/;p}'
И если вы хотите оставаться в той же файловой системе, что и вы:
du --inodes -xS
Вот пример вывода:
15K /usr/share/man/man3
4.0K /usr/lib
3.6K /usr/bin
2.4K /usr/share/man/man1
1.9K /usr/share/fonts/75dpi
...
519 /usr/lib/python2.7/site-packages/bzrlib
516 /usr/include/KDE
498 /usr/include/qt/QtCore
487 /usr/lib/modules/3.13.6-2-MANJARO/build/include/config
484 /usr/src/linux-3.12.14-2-MANJARO/include/config
Несколько человек упомянули, что у них нет обновленных coreutils, а параметр --inodes - им недоступно. Итак, вот ls:
sudo ls -AiR1U ./ |
sed -rn '/^[./]/{h;n;};G;
s|^ *([0-9][0-9]*)[^0-9][^/]*([~./].*):|\1:\2|p' |
sort -t : -uk1.1,1n |
cut -d: -f2 | sort -V |
uniq -c |sort -rn | head -n10
Это дает мне почти идентичные результаты с командой du
:
15K /usr/share/man/man3
4.0K /usr/lib
3.6K /usr/bin
2.4K /usr/share/man/man1
1.9K /usr/share/fonts/75dpi
1.9K /usr/share/fonts/100dpi
1.9K /usr/share/doc/arch-wiki-markdown
1.6K /usr/share/fonts/TTF
1.6K /usr/share/dolphin-emu/sys/GameSettings
1.6K /usr/share/doc/efl/html
14686 /usr/share/man/man3:
4322 /usr/lib:
3653 /usr/bin:
2457 /usr/share/man/man1:
1897 /usr/share/fonts/100dpi:
1897 /usr/share/fonts/75dpi:
1890 /usr/share/doc/arch-wiki-markdown:
1613 /usr/include:
1575 /usr/share/doc/efl/html:
1556 /usr/share/dolphin-emu/sys/GameSettings:
Я думаю, что include
Дело просто зависит от того, в какой каталог программа смотрит в первую очередь - потому что это одни и те же файлы и жестко связаны. Вроде как то, что выше. Я могу ошибаться в этом - и я приветствую исправление ...
Основной метод заключается в том, что я заменяю каждое из имен файлов ls
на имя содержащего его каталога в sed .
После этого ... Ну, я и сам немного нечеткий. Я почти уверен, что он точно считает файлы, как вы можете видеть здесь:
% _ls_i ~/test
> 100 /home/mikeserv/test/realdir
> 2 /home/mikeserv/test
> 1 /home/mikeserv/test/linkdir
% du --version
> du (GNU coreutils) 8.22
Создайте тестовый каталог:
% mkdir ~/test ; cd ~/test
% du --inodes -S
> 1 .
Некоторые дочерние каталоги:
% mkdir ./realdir ./linkdir
% du --inodes -S
> 1 ./realdir
> 1 ./linkdir
> 1 .
Создайте несколько файлов:
% printf 'touch ./realdir/file%s\n' `seq 1 100` | . /dev/stdin
% du --inodes -S
> 101 ./realdir
> 1 ./linkdir
> 1 .
Некоторые жесткие ссылки:
% printf 'n="%s" ; ln ./realdir/file$n ./linkdir/link$n\n' `seq 1 100` |
. /dev/stdin
% du --inodes -S
> 101 ./realdir
> 1 ./linkdir
> 1 .
Посмотрите на жесткие ссылки:
% cd ./linkdir
% du --inodes -S
> 101
% cd ../realdir
% du --inodes -S
> 101
Они подсчитываются отдельно, но идут на один каталог вверх ...
% cd ..
% du --inodes -S
> 101 ./realdir
> 1 ./linkdir
> 1 .
Затем я запустил свой запускаемый скрипт снизу и:
> 100 /home/mikeserv/test/realdir
> 100 /home/mikeserv/test/linkdir
> 2 /home/mikeserv/test
И скрипт Грэма:
> 101 ./realdir
> 101 ./linkdir
> 3 ./
Так что я думаю это показывает, что единственный способ подсчитать индексные дескрипторы - это индексные дескрипторы. И поскольку подсчет файлов означает подсчет inodes, вы не можете подсчитать inodes дважды - для точного подсчета файлов inodes не могут быть подсчитаны более одного раза.
Я нахожу это быстрее и переносимым:
sh <<-\CMD
{ echo 'here='"$PWD"
printf 'cd "${here}/%s" 2>/dev/null && {
set --
for glob in ".[!.]*" "[!.]*" ; do
set -- $glob "$@" &&
[ -e "./$1" ] || shift
done
printf "%%s\\t%%s\\n" $# "$PWD"
}\n' $( find . -depth -type d 2>/dev/null )
} | . /dev/stdin |
sort -rn |
sed -n \
'1,50{/^.\{71\}/s/^\(.\{30\}\).*\(.\{37\}\)$/\1...\2/;p}'
CMD
Необязательно -exec
для каждого каталога - он использует только один sh
ell процесс и один найти
. Мне нужно получить набор - $ glob
, чтобы включить файлы .hidden
и все остальное, но это очень близко и очень быстро. Вы можете просто cd
в любой корневой каталог, который должен быть для проверки, и вперед.
Вот образец моего вывода из / usr
:
14684 /usr/share/man/man3
4322 /usr/lib
3650 /usr/bin
2454 /usr/share/man/man1
1897 /usr/share/fonts/75dpi
...
557 /usr/share/gtk-doc/html/gtk3
557 /usr/share/doc/elementary/latex
539 /usr/lib32/wine/fakedlls
534 /usr/lib/python2.7/site-packages/bzrlib
500 /usr/lib/python3.3/test
Я также использую sed
внизу, чтобы сократить его до 50 лучших результатов. head
, конечно, будет быстрее, но я также обрезаю каждую строку, если необходимо:
...
159 /home/mikeserv/.config/hom...hhkdoolnlbekcfllmednbl/4.30_0/plugins
154 /home/mikeserv/.config/hom...odhpcledpamjachpmelml/1.3.11_0/js/ace
...
Это грубовато, по общему признанию, но это была мысль. Еще одно грубое устройство, которое я использую, - это сброс 2> stderr
для find
и cd
в 2> / dev / null
. Это просто чище, чем искать ошибки прав доступа для каталогов, которые я не могу прочитать без корневого доступа - возможно, мне следует указать это в find
. Что ж, работа продолжается.
Хорошо, я исправил глобусы оболочки следующим образом:
for glob in ".[!.]*" "[!.]*" ; do
set -- $glob "$@" &&
[ -e "./$1" ] || shift
done
Я действительно собирался задать вопрос о том, как это можно сделать, но когда я набирал заголовок вопроса, сайт указал мне на ] предложил родственный вопрос где, о чудо, Стефан уже взвешивал в . Так что это было удобно. Очевидно [^.],
хотя и хорошо поддерживаются, но не переносимы, и вы должны использовать ! Bang.
Я нашел это в комментарии Стефана.
В любом случае, очевидно, что простого извлечения скрытых файлов было недостаточно. Поэтому я должен установить
дважды, чтобы избежать поиска позиционных значений для литерала $ glob
. Тем не менее, похоже, что это вообще не влияет на производительность и надежно добавляет каждый файл в каталог.
Почему бы не использовать что-то вроде KDirStat Хотя изначально он был написан для KDE, но отлично работает и с GNOME {{ 1}} Это дает вам лучший обзор количества файлов / каталогов и соответствующего использования в графическом интерфейсе