Команды поиска GREP и FIND

Команды поиска GREP и FIND



      Команда grep/egrep
"фильтрует" строки - оставляя только "подходящие" под шаблон

      egrep шаблон [ file ... ]
В шаблон могут входить обыкновенные символы (представляющие сами себя), а также - спецсимволы, выполняющие служебные функции шаблона: . * ^ $ [ ]

      . - любой произвольный символ
      * - "множитель" (предыдущий символ любое число раз)
      .* - любая последовательность символов
      ^шаблон - привязываем шаблон к началу строки
      шаблон$ - привязываем шаблон к концу строки
      [символы] - любой один символ из тех, что стоят в скобках

Вывести всех привелигированных пользователей:

      egrep ':0:0:' /etc/passwd
Вывести всех непривелигированных пользователей:

      egrep -v ':0:0:' /etc/passwd
Вывести всех пользователей, имена которых начинаются с букв a,b,e,d

      cat /etc/passwd | grep "^[abed].*"

      Команда find.
find рекурсивно обходит указанные каталоги и файлы, проверяет для них выполнение указанных условий и может вдобавок выпол- нять с найденными файлами указанные действия. Например, самое простое действие - распечатать имя файла.

      find файл [ ... ] ключи/условия/действия

      Ключи-условия команды find:

      -name "*.c" - простое имя подходит под шаблон *.c
      -type f - брать только обыкновенные файлы
      -type d - брать только каталоги
      -size +500 - файлы размером БОЛЬШЕ 500*512 байт
      -mtime -3 - дата модификации МЕНЬШЕ 3-х дней
      -newer filename - дата модификации нашего файла МЕНЬШЕ, чем у
      заданного файла filename
ВНИМАНИЕ: Команда find использует стандартные SHELL'овские шаблоны. Команда grep использует шаблоны другого формата, называемые регулярными выражениями.

      Ключи-действия команды find

      -print - просто распечатать маршрутное имя файла
      -exec команда над файлом {} \;

      Пример.
Напечатать имена всех обыкновенных Си-шных файлов, изменившихся за последние 4 дня в текущем каталоге и его подкаталогах.

      find . -type f -mtime -4 -print
Уничтожить все файлы с окончаниями *.bu, *%, которые не меня- лись больше месяца.

      find / \( -name "*.bu" -o -name "*%" \) -type f \
      -atime +30 -exec rm {} \;
запись "rm {} \;" - обозначает команду Unix, которая будет вы- полняться для всех таких найденных файлов. Вместо значка "{}" будет подставляться каждый раз имя найденного файла. Естествен- но, что таким образом мы их все и уничтожим.


Home | UK Shop Center |Contact | Buy Domain | Directory | Web Hosting | Resell Domains


Copyleft 2005 ruslib.us