Команды поиска 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, которая будет
выполняться для всех таких
найденных файлов. Вместо значка
"{}" будет подставляться каждый
раз имя найденного файла.
Естественно, что таким образом мы
их все и уничтожим.
[Назад] [Содержание] [Вперед]
|