Intel Core 2 (i5) является 64-разрядной поддержкой процессора Intel 64, Intel 64 является реализацией Intel x86-64
Вы могли передать вывод по каналу find
через head
:
find . -name '*.txt' | head -n 3
Этот другой ответнесколько некорректен. Команда
найти. -имя '*.txt' | голова -n 3
Затем есть объяснение в одном из комментариев[курсив мой]:
голова
запускается и ожидает ввода с левой стороны пайпа. Затем запускаетсяfind
и ищет файлы, соответствующие заданным критериям, и отправляет результат через канал. Когдаhead
получает и печатает запрошенное количество строк, он завершается, закрывая канал.find
замечает закрытую трубу и также завершает работу. Простой, элегантный и эффективный.
Это почтиправда.
Проблема в том, что find
замечает закрытый канал только при попытке записи в него — в данном случае это происходит при обнаружении 4-го совпадения. Но если 4-го совпадения нет, то find
продолжится. Ваша оболочка будет ждать! Если это происходит в скрипте, скрипт будет ждать, несмотря на то, что мы уже знаем, что вывод канала является окончательным и к нему нельзя ничего добавить. Не так эффективно.
Эффект незначителен, если этот конкретный find
завершается быстро сам по себе, но при сложном поиске в большом файловом дереве команда может излишне задержать все, что вы хотите сделать дальше.
Не столь идеальное решение — запустить
( find … & ) | head -n 3
Таким образом, когда head
завершается, оболочка продолжает работу немедленно. Фоновый процесс find
может быть тогда проигнорирован (он завершится рано или поздно) или нацелен на pkill
или что-то в этом роде.
Чтобы проверить концепцию, вы можете выполнить поиск /
. Мы ожидаем только одно совпадение, однако find
ищет его везде, и это может занять много времени.
find / -wholename / 2>/dev/null | head -n 1
Завершите его, нажав Ctrl+C, как только обнаружите проблему. Теперь сравните:
pidof find ; ( find / -wholename / 2>/dev/null & ) | head -n 1 ; pidof find
Решение без find
, которое может сработать для многих, состоит в том, чтобы использовать вместо него fd
, похожий на find -инструмент, написанный на Rust.(fd — это простая, быстрая и удобная -альтернатива поиску)
fd --glob '*.txt' /path/to/search --max-results $n
head
запускает и ожидает входа с левой стороны канала. Затемfind
запускает и ищет файлы, которые соответствуют указанным критериям, отправляя его вывод через канал. Когдаhead
получил и распечатал количество строк, которые требуют, оно завершается, закрывая канал.find
замечает закрытый канал, и он также завершается. Простой, изящный и эффективный. – D_Bye 19.03.2013, 11:37-n 3
совместимый POSIX, и поэтому вероятно, быть более портативным. – l0b0 19.03.2013, 18:11