Поиск в Linux

Board index Администрирование Операционные системы Linux

Description: Установка, настройка, оптимизация и решение проблем

#1by mexan » 11.01.2025, 18:18

Поиск и фильтрация
  • - grep - поиск строки в файлах.
    Code: Select all
    grep "text" file.txt
  • - find - поиск файлов в системе.
    Code: Select all
    find /path/to/search -name "filename.txt"
  • - locate - быстрый поиск файлов (требуется предварительная установка базы данных).
    Code: Select all
    locate file.txt

Поиск файлов и каталогов с помощью find

  • Команда для поиска файлов и каталогов с различными параметрами:
    Code: Select all
    find <каталог> <параметры> <шаблон>
  • Примеры использования:
    Поиск файла test.txt в каталоге/tmp.
    Code: Select all
    find /tmp -name "test.txt"
  • регистронезависимый поиск.
    Code: Select all
    find /tmp -iname "test.txt"
  • поиск всех каталогов в /var, которые начинаются на l:
    Code: Select all
    find /var -maxdepth 1 -type d -name "l"
  • поиск файлов, изменённых за последние сутки:
    Code: Select all
    find /var -mtime -1
  • поиск файлов в диапазоне времени (изменены от 1 до 5 минут назад):
    Code: Select all
    find /tmp -mmin +1 -mmin -5
  • поиск файлов, новее указанного:
    Code: Select all
    find /tmp -newer /tmp/temp.txt
  • Основные параметры для фильтрации поиска:
    -type f — искать только файлы
    -type d — искать только каталоги
    -name — имя файла (чувствительно к регистру)
    -iname — имя файла (регистронезависимо)
    -mtime N — поиск по времени модификации (в днях):
    -mtime -N — моложе чем N дней, -mtime +N — старше.
    -mmin — то же, но в минутах.
    -newer — искать файлы новее заданного.
    -size — поиск по размеру файла.
    -maxdepth N и -mindepth N — ограничение глубины поиска.
    -empty — искать пустые файлы или каталоги.

Поиск по дате
  • Найти файлы в каталоге /var, которые изменились ровно сутки назад:
    Code: Select all
    find /var -mtime 1
  • Найти файлы в каталоге /tmp, изменённые за последние 5 минут:
    Code: Select all
    find /tmp -mmin -5
  • Найти файлы в диапазоне времени (например, от 1 до 5 минут с момента изменения):
    Code: Select all
    find /tmp -mmin +1 -mmin -5
  • Найти файлы, у которых дата модификации новее определённого файла. Для этого:
    Создайте файл с нужной датой модификации:
    Code: Select all
    touch -t 202501101200 /tmp/temp.txt
    Выполните команду:
    Code: Select all
    find /tmp -newer /tmp/temp.txt
    Вы также можете использовать любой старый файл в качестве аргумента для параметра -newer, если это подходит для вашей задачи.
Image
mexan
Администратор
Reputation: 0
Posts: 179
Topics: 138

#2by mexan » 11.01.2025, 18:18

Поиск по размеру
  • Для поиска используется параметр -size. Формат значения: <знак>N<множитель>.
    + — файлы БОЛЬШЕ указанного размера.
    - — файлы МЕНЬШЕ указанного размера.
    Без знака — файлы точно указанного размера.
  • Множители размера:
    c — 1 байт.
    w — 2 байта.
    b — 512 байт (по умолчанию).
    k — 1 КБ.
    M — 1 МБ.
    G — 1 ГБ.
    Найти файлы меньше двух мегабайт:
    Code: Select all
    find /var -size -2M
    Найти файлы размером больше 10 КБ, но меньше 100 КБ:
    Code: Select all
    find /var -size +10k -size -100k

Действия с результатами поиска
  • Команда find позволяет выполнить действия над найденными файлами.
    -delete — удаляет найденные файлы.
    Удалить все пустые файлы и каталоги в каталоге /tmp:
    Code: Select all
    find /tmp -empty -delete
    -ls — выводит подробную информацию о файлах.
    -print — выводит полный путь к файлам (по умолчанию).
    -exec — выполняет команду для каждого найденного файла.
    Скопировать найденные файлы в каталог /tmp/lessons:
    Code: Select all
    find /tmp -name "t*" -exec cp {} /tmp/lessons ;
    Удалить файлы старше 7 дней:
    Code: Select all
    find /tmp -mtime +7 -exec rm {} ;
Image
mexan
Администратор
Reputation: 0
Posts: 179
Topics: 138

#3by mexan » 11.01.2025, 18:28

Поиск в файлах
    Для глобального поиска текста в файлах по регулярным выражениям используется команда grep.
    Синтаксис: grep <параметры> <шаблон> <файл>
  • Полезные параметры:
    -i — не учитывать регистр символов,
    -n — выводит номер строки,
    -H — выводит имена файлов,
    -e — позволяет указать несколько шаблонов поиска,
    -F — рассматривает шаблон поиска как обычную строку,
    -E или --extended-regexp — включает расширенный режим регулярных выражений,
    A<n> или --after-content — выводит найденную строку и <n> строк ПОСЛЕ неё,
    B<n> или --before-content — выводит найденную строку и <n> строк ДО неё,
    C<n> — выводит найденную строку и <n> строк ДО и ПОСЛЕ неё,
    -r — поиск во всех подкаталогах,
    --exclude — исключить файлы по шаблону.
  • Примеры использования:
    Code: Select all
    grep -i "word" /var/log/syslog 
    grep -r "ошибка" /etc 
    grep -n "pattern" /var/log/syslog
Image
mexan
Администратор
Reputation: 0
Posts: 179
Topics: 138


Return to Linux

cron