1

Когда бегаешь

ls | head

Кажется, голова ждет полного вывода команды piped перед печатью на экран. Это нежелательно, когда выполнение команды занимает очень много времени, например, когда вы запускаете ls в каталоге, содержащем миллионы файлов.

Тем не менее, когда один бежит

find | head

головка НЕ ожидает полного вывода перед началом печати на экран - она делает это в режиме реального времени.

У меня такой вопрос: в чем разница между find и ls, которая вызывает эту разницу в поведении? Во-вторых, есть ли команда замены (для ls или OR для head), которая позволила бы мне мгновенно занять заголовок длинного списка каталогов?

1 ответ1

1

Это не вина head ; это ls  ls почти всегда сортирует свои выходные данные (по умолчанию, по имени; по запросу, по дате).  И это по своей природе любого рода, что он не может производить никакого вывода, пока он не прочитал весь ввод.  find не сортирует свои выходные данные, поэтому может начать производить быстрее.

Вы могли убедиться в этом сами, просто запустив

ls

а также

find

и наблюдая разницу во времени отклика.

Кстати, вы можете заставить ls перечислять каталоги без сортировки, указав -U .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .