с find
для типов каталогов в текущем каталоге без рекурсии:
find . ! -name . -prune ! -type d | grep -c /
... только для каталогов отбрасывается второй удар или для всех типов файлов полностью отказаться от теста -типа
.
в данном случае это просто, потому что без рекурсии мы всегда видим только один разделитель пути для каждого файла, и поэтому не возникает путаницы в том, что и где считать.подсчет новых строк, когда вы должны подсчитывать файлы, может привести к проблемам - эти две вещи не связаны. так что же делать в противном случае?
find .//. | grep -c '^\.//\.'
... вернет точное количество дочерних объектов + этот объект с корнем в текущем каталоге.
одинаково действителен, но с обратной логикой, потому что он цитирует новые строки внутри и, вероятно, быстрее, потому что ему требуется только stat ()
для каждого каталога, а не для каждого составляющего файла:
\ls -1qRA . | grep -Exc \[^/]+
если вы отбрасываете ] -R
для ls
он также будет работать без рекурсии.
Однако возможно, что приведенное выше может вернуть ложный счет в зависимости от многобайтовых символов в именах файлов и несовместимых настроек локали. помещение LC_ALL = C
в POSIX-совместимую среду ls
защитит от этого, а для подсчета глубины большого дерева это может только помочь в вопросах производительности после все.
Я смог установить i3 на Debian Stretch, используя эти репозитории:
deb http://deb.debian.org/debian stretch main
deb-src http://deb.debian.org/debian stretch main
Попробуйте использовать эти репозитории и запустить apt-get update
.