Утилита less, разработанная в рамках проекта GNU, содержит все функции и команды управления выводом, имеющиеся в программе more, и некоторые дополнительные, например, позволяет использовать клавиши управления курсором (‹Стрелка вверх›, ‹Стрелка вниз›, ‹PgUp›, ‹PgDown›) для перемещения по тексту. Вспомните, мы уже говорили об этом, когда рассматривали интерактивную подсказку man.
Команды more и less позволяют производить поиск подстроки в просматриваемом файле, причем команда less позволяет производить поиск как в прямом, так и в обратном направлении. Для организации поиска строки символов string надо набрать в командной строке программы в нижней части экрана (там, где двоеточие) /string. Если искомая строка будет найдена, будет отображен соответствующий кусок текста, причем найденная строка будет находиться в самом верху экрана.
4.6.8. КОМАНДА FIND И СИМВОЛЫ ШАБЛОНОВ ДЛЯ ИМЕН ФАЙЛОВ
Еще одной часто используемой командой для работы с файлами в Linux является команда поиска нужного файла find. Команда find может искать файлы по имени, размеру, дате создания или модификации и некоторым другим критериям.
Общий синтаксис команды find имеет следующий вид:find [список_каталогов] критерий_поиска
Параметр ‘список_каталогов’ определяет, где искать нужный файл. Проще всего задать в качестве начального каталога поиска корневой каталог /, однако, в таком случае поиск может затянуться очень надолго, так как будет просматриваться вся структура каталогов, включая смонтированные файловые системы (в том числе сетевые, если таковые есть). Можно сократить объем поиска, если задать вместо одного корневого каталога список из нескольких каталогов (естественно, тех, в которых может находиться искомый файл):
[user]$ find /usr/share/doc /usr/doc /usr/locale/doc -name instr.txt
Началом ‘критерия_поиска’, определяющего, что именно должна искать программа find, считается первый аргумент, начинающийся на ‘-‘, ‘(‘, ‘)”, ‘,’ или ‘!’. Все аргументы, предшествующие ‘критерию_поиска’, трактуются как имена каталогов, в которых надо производить поиск. Если не указано ни одного пути, поиск производится только в текущем каталоге и его подкаталогах.
Чаще всего поиск проводится по именам файлов, как это показано в предыдущем примере, т. е. ‘критерий_поиска’ задается как ‘-name имя_файла’. Вместо опции -name можно использовать опцию -path, тогда команда будет искать совпадения в полном имени файла, с указанием пути. Например, команда
[user]$ find. -path './sr*sc'
найдет в текущем каталоге подкаталог ‘./src/misc’. Вместо полного имени файла или каталога в этом примере использован так называемый ‘шаблон имени’. Поскольку шаблоны имен файлов могут использоваться не только с командой find, но и со многими другими командами (включая уже рассмотренные команды chmod, chown, chgrp, cp, rm, cat, mv), то правилам составления шаблонов стоит уделить некоторое внимание.
Чаще всего шаблоны имен файлов строятся с помощью специальных символов ‘*’ и ‘?’. Значок ‘*’ используется для замены произвольной строки символов. В Linux
• ‘*’ – соответствует всем файлам, за исключением скрытых;
• ‘.*’ – соответствует всем скрытым файлам (но также текущему каталогу ‘.’ и каталогу уровнем выше ‘..’: не забывайте об этом!);
• ‘*.*’ – соответствует только тем файлам и каталогам, которые имеют ‘.’ в середине имени, или оканчиваются на точку;
• ‘p*r’ – соответствует и ‘peter’ и ‘piper’;
• ‘*c*’ – соответствует и ‘picked’ и ‘peck’.
Значок ? заменяет один произвольный символ, поэтому index?.htm будет соответствовать именам index0.htm, index5.htm и indexa.htm.