Търсене и филтриране

Команди за търсене на файлове и съдържание

Търсене и филтриране

Команда Find

Основно търсене

Търсене по име
Търсене по тип
find -name "име_на_файл"        # точно съвпадение
find -name "*.php"              # всички PHP файлове
find -iname "*.jpg"             # без разлика главни/малки букви

Разширено търсене

По време
По размер
find . -mtime +30              # файлове променени преди 30+ дни
find . -mtime -7               # файлове променени в последните 7 дни

Изпълнение на действия

# Изтриване на стари файлове
find . -type f -name '*' -mtime +30 -exec rm {} \;

# Промяна на права
find . -type f -exec chmod 644 {} \;

Команда Grep

Основно търсене

В един файл
В множество файлове
grep "текст" файл.txt          # търси в конкретен файл
grep -i "текст" файл.txt       # игнорира главни/малки букви

Разширено търсене

Контекст
Регулярни изрази
grep -A 2 "текст" файл.txt     # 2 реда след съвпадението
grep -B 2 "текст" файл.txt     # 2 реда преди съвпадението
grep -C 2 "текст" файл.txt     # 2 реда преди и след

Комбиниране на команди

Find с Grep

# Търсене в PHP файлове
find . -type f -name "*.php" -exec grep -l "wordpress" {} \;

# Търсене с изключване на директории
find . -type f -not -path "./node_modules/*" -exec grep -l "error" {} \;

Практически примери

  1. Намиране на големи файлове:
    find . -type f -size +50000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
    
  2. Търсене на специфичен текст в PHP файлове:
    find . -type f -name "*.php" -exec grep -H "define.*WP_DEBUG" {} \;
    
  3. Намиране на скорошно променени файлове:
    find . -type f -mtime -1 -ls
    

Полезни съвети

  • Използвайте -i за търсене без разлика главни/малки букви
  • Добавете -l за да видите само имената на файловете
  • Използвайте -r за рекурсивно търсене в поддиректории
  • Добавете -n за да видите номерата на редовете

Допълнителни ресурси

За повече информация и примери:

  • man find - пълна документация за find
  • man grep - пълна документация за grep
  • WPX Know-how