Растровый шрифт в терминале Linux

Проблема

Что вы пытаетесь сделать? Позвольте мне попытаться объяснить вашу команду, чтобы я ее понял:

ls -Ra | grep -cve / -e '^ \. * $' даст вам:

  • Количество файлов, каталогов, символических ссылок, ...
  • Включая текущий каталог
  • Исключая файлы с именами состоит только из точек: touch '...' (!!!)

Решение

Если вы хотите сделать точно так же с найти , вы можете использовать:

find . -not -regex '^\.+$' | wc -l

Если файл с более чем двумя точками является ошибкой, вот он:

find . | wc -l

Или (теоретически) путь 'ls', используя следующее - сделав a верхний регистр не печатает текущий и родительский каталог:

ls -RA | grep -cve/ -e^\$

Немного о времени

               except multidots    all files    number of files
  ls /home                0.75s        0.70s            ~330000
find /home                0.50s        0.50s            ~330000
  ls /                    2.50s        2.50s           ~1350000
find /                    1.90s        1.70s           ~1350000
  ls / [BSD]             10.00s        8.50s            ~250000
find / [BSD]              7.50s        7.50s            ~250000

Как видите, поиск всегда выполняется быстрее. Но мы его еще не оптимизировали!

Добавление параметра -f в ls пропускает сортировку и, таким образом, ускоряет процесс примерно на 30% (что дает 1,60 с для / ), что составляет ls -RAf | grep -cve / -e ^ \ $ самая быстрая из команд. Однако во FreeBSD он, похоже, ничего не делает ...

Полезно знать: крайняя разница во времени при проверке нескольких точек в BSD (в данном случае FreeBSD), вероятно, происходит главным образом из-за того, как GNU Grep работает, и того факта, что он намного быстрее .
Более длительное время между BSD и Linux, вероятно, связано с тем, что машина BSD, на которой я это тестировал, намного медленнее, а также, возможно, потому, что она использует другую файловую систему.

TL; DR

Самая быстрая команда для получения количества всех узлов файловой системы внутри каталога с помощью стандартных инструментов в Linux:

ls -RAf | grep -cve/ -e^\$

Более короткая команда, которая также является более быстрой во FreeBSD (и, кроме того, фактически отвечает на ваш вопрос):

find . | wc -l
1
08.02.2016, 02:45
2 ответа

«Растровый шрифт» звучит как командное окно Windows (и, кстати, не является шрифтом TrueType). Можно установить консольные шрифты Linux, но это специально созданные шрифты (не генерируются и не переводятся автоматически из шрифтов Windows). Если кто-то не сделал один из шрифтов консоли Linux, чтобы имитировать внешний вид Windows, вам не повезло.

Дополнительная литература:

1
29.04.2021, 00:18

Возможно, вы имели в виду командную строку MS -DOS; в этом случае следующее может быть тем, что вы ищете:Stack Overflow :какой шрифт используется в MS -DOS?

0
29.04.2021, 00:18

Теги

Похожие вопросы