Ефективний пошук файлів є важливою навичкою для користувачів, розробників та системних адміністраторів Linux. Linux надає безліч інструментів і команд для пошуку файлів, каталогів і навіть для пошуку у їхньому вмісті.

Команда “знайти” є одним з найуніверсальніших інструментів для пошуку файлів за іменами, типами, розмірами, часом модифікації і навіть дозволами.

Базовий синтаксис

find [path] [options] [expression]

a) Пошук за назвою файлу

find /home -name "report.pdf"
  • /home → Шлях пошуку.

  • -name → Знайти точну назву файлу(з урахуванням регістру).

🔹 Пошук без урахування регістру:

find /home -iname "report.pdf"

b) Пошук за розширенням

find /var/log -type f -name "*.log"
  • -type f → Шукати тільки файли.
  • Для каталогів використовуйте -type d.

c) Пошук за розміром

find / -size 500M
  • 500M → Файли більші за 500 МБ.
  • 100k → Файли, менші за 100 КБ.

d) Пошук за часом модифікації

find /etc -type f -mtime -7
  • -mtime -7 → Файли, змінені за останні 7 днів.
  • Використовуйте 7 для пошуку файлів старше 7 днів.

e) Виконання команд над знайденими файлами

find /var/log -name "*.log" -exec gzip {} \;
  • Стискає всі файли .log у теці /var/log.

f) Об’єднання декількох умов

find /home -type f \( -name "*.pdf" -o -name "*.docx" \) -size 1M
  • Шукає файли PDF або DOCX, розмір яких перевищує 1 МБ.

Швидший пошук за допомогою команди “locate”(Висока продуктивність)

На відміну від“find”,“locate” використовує попередньо створену базу даних для майже миттєвого пошуку.

Встановлення та оновлення бази даних

sudo apt install mlocate # Debian/Ubuntu
sudo yum install mlocate # CentOS/RHEL
sudo updatedb # Оновити базу даних locate

Використання

locate report.pdf

🔹 Пошук без урахування регістру:

locate -i report.pdf

обмеження кількості результатів:

locate -n 20 nginx

⚠️ Порада: Завжди виконуйте sudo updatedb, щоб оновити базу даних перед пошуком.

Пошук всередині файлів за допомогою grep

Якщо вам потрібно знайти текстові шаблони всередині файлів, використовуйте grep.

Базовий пошук

grep "error" /var/log/syslog
  • Знаходить слово “error” у файлі /var/log/syslog.

Рекурсивний пошук

grep -rnw '/etc' -e "root"
  • r → Рекурсивний пошук.
  • n → Показати номери рядків.
  • w → Пошук по всьому слову.

Пошук за допомогою Regex

grep -E "([0-9]{3})-[0-9]{3}-[0-9]{4}" *.txt
  • Знаходить номери телефонів у файлах .txt.

Використання “whereis” і “which”

a) Пошук виконуваних файлів

whereis python
  • Показує розташування двійкових файлів, man-сторінок та вихідних текстів.

b) Знайти точний шлях до виконуваного файлу

which python3
  • Виводить повний шлях до виконуваного файлу.

Пошук за допомогою fd – сучасна альтернатива пошуку 🚀 (Рекомендовано)

fd – це швидша та зручніша альтернатива пошуку.

Встановлення fd

sudo apt install fd-find # Ubuntu/Debian
sudo dnf install fd-find # Fedora

Приклади

fd report.pdf
  • Шлях пошуку за замовчуванням: поточний каталог.

fd -e log error
  • Шукає файли з назвою error з розширенням .log.

fd -t d backup
  • Знаходить каталоги з назвою “backup”.

Пошук за допомогою fzf (Interactive Fuzzy Finder) 🔎

fzf надає інтерфейс пошуку в реальному часі.

Встановлення fzf

sudo apt install fzf

Використання

fzf
  • Відкриває інтерактивний інтерфейс пошуку.
  • Почніть вводити, щоб миттєво відфільтрувати результати.

Поради щодо продуктивності для великих файлових систем

  • Виключіть непотрібні каталоги:

find / -path "/proc" -prune -o -name "*.conf" -print
  • Обмежте глибину для прискорення пошуку:

find /var -maxdepth 2 -name "*.log"
  • Використовуйте locate замість find, коли це можливо – це набагато швидше.
  • Комбінуйте з grep для пошуку в реальному часі:
grep -r "DATABASE_URL" $(locate .env)

Міркування щодо безпеки

  • Уникайте використання sudo без необхідності – може відкрити конфіденційні файли.
  • Обмежте пошук за допомогою grep і locate у багатокористувацьких середовищах.
  • Налаштуйте правильні дозволи для конфіденційних каталогів.

Висновок

Linux надає потужні і гнучкі інструменти для ефективного пошуку файлів і вмісту.

  • Використовуйте find для розширеного умовного пошуку.
  • Використовуйте locate для миттєвого пошуку.
  • Використовуйте grep для пошуку всередині файлів.
  • Спробуйте сучасні інструменти, такі як fd і fzf, для кращої зручності та продуктивності.

У великих середовищах поєднання find, grep та індексованого пошуку, як-от locate, забезпечує найкращий баланс між швидкістю та точністю.