Краткий справочник по Find и Grep

grep — утилита командной строки, которая находит на вводе строки, отвечающие заданному регулярному выражению, и выводит их, если вывод не отменён специальным ключом. Название представляет собой акроним английской фразы «search globally for lines matching the regular expression, and print them» — «искать везде строки, соответствующие регулярному выражению, и выводить их».

Изначально была создана для операционной системы UNIX.

Существуют модификации grep: egrep (с обработкой расширенных регулярных выражений), fgrep (трактующая символы $*[]^|()\ буквально), rgrep (с включённым рекурсивным поиском). Как сказано в руководстве man (с точностью до перевода) «egrep то же самое что grep -E. fgrep то же самое что grep -F. rgrep то же самое что grep -r».

find — утилита поиска файлов, используемая в UNIX‐подобных операционных системах. Может производить поиск в одной или нескольких директориях с использованием критериев, заданных пользователем. По умолчанию, find возвращает все файлы в рабочей директории. Более того, find позволяет применять пользователю определённые действия ко всем найденным файлам. Также поддерживаются регулярные выражения.

  • Найти в текущем каталоге и его подкаталогах файлы измененные за два дня от текущего времени

    find . -mtime -2d


  • Найти в /var/logs файлы созданные более двух дней назад и удалить их

    find /var/logs -mtime +2 |xargs rm


  • Найти только в текущем каталоге файлы с правами 666 и вывести для каждого параметры аналогично "ls -l"

    find . -maxdepth 2 -perm 666 -ls


  • Найти в каталоге /bin и подкаталогах файлы размером больше 5Мб (+5000000 символов).

    find /bin -size +5000000c


  • Найти только в текущем каталоге все файлы кроме .php

    find . \! -name ".php" -maxdepth 1


  • Найти только в текущем каталога все файлы .gif и для каждого из них выполнить chmod 700

    find . -name ".gif" -maxdepth 1 -exec chmod 700 {} \;


  • Отконвертировать все файлы в текущем каталоге и подкаталогах из формата DOS/MAC в UNIX (концы строк)

    find . -type f | xargs dos2unix


  • Отконвертировать все файлы в текущем каталоге и подкаталогах из cp1251 в utf-8, выводя имена файлов в процессе

    for a  in `find . -type f` ; do echo $a ; iconv -f cp1251 -t utf-8 -o $a.new $a ; mv $a.new $a ; done


  • Заменить во всех файлах в текущем каталоге и его подкаталогах Foo на Bar

    for a  in `find . -type f` ; do echo $a ; sed 's/Foo/Bar/g' $a > $a.new ; mv $a.new $a ; done


  • Найти в текущем каталоге подкаталогах все файлы содержащие текстовую строку "mustdie"

    grep -r "mustdie" 


  • Посчитать количество файлов в текущей директории и ее поддиректориях

    find . -type f | wc -l


  • Напечатать названия файлов с найденным текстом, начиная с каталога /var/log

    grep -r -l "Blocked SPAM" /var/log


  • Сделать архив /home, кроме пользователя vasya

    tar cvzf backup_homes.tgz `ls /home|grep -v vasya`


  • Найти в текущем каталоге подкаталогах все файлы содержащие "fail" или "failed"

    egrep -r "fail|failed" .


  • Вывести все строки smb.conf, кроме комментариев и пустых строк

    egrep -v '(^[#;])|(^$)' smb.conf


    egrep поддерживает также и другие регулярные выражения по синтаксису в основном сходные с RegExp в Perl.





Вас также может заинтересовать:

Опасная уязвимость в GNU grep (У меня работает О_о)