Команда find допомагає нам знайти певний файл у каталозі. Він використовується для пошуку списку файлів для різних умов, таких як дозвіл, право власності користувача, модифікація, дата/час, розмір тощо.
В Unix-подібних та інших операційних системах команда find — це утиліта командного рядка, яка знаходить файли на основі кількох визначених користувачем форматів і або друкує шлях до всіх відповідних об’єктів, або, якщо потрібні інші дії, виконує цю дію на всі відповідні об'єкти.
Він починає пошук із потрібного початкового розташування, а потім рекурсивно перетинає каталоги (вузли) ієрархічної структури (зазвичай дерева). Команда find може здійснювати пошук і проходження в різних системах файлових розділів, що належать до одного чи кількох пристроїв зберігання даних у початковому каталозі.
Формат пошуку містить шаблон для зіставлення з іменем файлу або діапазоном часу для зіставлення з часом модифікації або часом доступу до файлу. Команда find за замовчуванням надає список кожного файлу в поточному робочому каталозі. Однак користувачі можуть обмежити пошук бажаним максимальним рівнем після початкового каталогу.
Пов’язані програми пошуку застосовують індексовану файлову базу даних, отриману за допомогою команди fine, щоб надати швидшу техніку пошуку всієї файлової системи за назвою.
Утиліта пошуку за замовчуванням поставляється з більшістю Дистрибутиви Linux , тому нам не потрібно встановлювати додаткові пакети. Це одна з найбільш важливих і використовуваних команд Linux система.
find
Ці два варіанти визначають, як find має розглядати символічні посилання. За замовчуванням символічні посилання ніколи не використовуються. Прапор, тобто -Л , призведе до пошуку символічних посилань. Прапор, тобто -Х , просто переслідуватиме символічні посилання, продовжуючи використовувати аргументи командного рядка. Прапори згадуються в стандарті POSIX для команди find. Базовим розширенням є прапорець, тобто -П , щоб явно вимкнути наступне символічне посилання.
Принаймні шлях повинен передбачати вираз. Команда find може внутрішньо інтерпретувати символи підстановки, і команди повинні бути ретельно взяті в лапки, щоб керувати глобінгом оболонки.
Компоненти виразу ізольовані межею аргументів командного рядка, яка зазвичай позначається пробілами в синтаксисі оболонки. Вони розглядаються від лівого боку до правого боку. Вони можуть містити такі логічні компоненти, як АБО та І, а також предикати (дії та фільтри). GNU find містить кілька інших функцій, не згаданих у POSIX.
Для позначення каталогу використовуються наступні символи:
(.) : для назви поточного каталогу
(/) : Для кореневого каталогу
Коротка історія команди Find
Команда find з'явилася у версії 5 Unix як елемент Верстак програміста проекту і був уточнений Дік Хейт з cpio, які були розроблені для спільного використання.
Спочатку реалізація GNU команди find була визначена Ерік Декер . Пізніше він був розроблений Девід Маккензі, Тім Вуд , і Джей Плетт . Крім того, команду find було перенесено на ОС IBM i.
c код абс
Присудки
Широко використовувані праймеріз:
Знайдіть значення за замовчуванням для реалізації -print у випадку, якщо умови виконуються, якщо вираз не використовує жодного з -ok, -exec, -print або -print0.
Оператори
Оператори покращують командні вирази пошуку. Вони згадуються в порядку убування:
- вираз1 вираз2 (або вираз1 -a вираз2 : І. вираз2 не обчислюється, якщо вираз1 хибний.
- вираз1 -o вираз2 : АБО. expr2 не обчислюється, якщо expr1 має значення true.
Приклади команди find
Давайте розглянемо наступні приклади команди find:
- Пошук файлів за назвою
- Пошук файлів за типом
- Знайти новіші файли
- Знайдіть і видаліть файл
- Знайдіть каталог
- Пошук файлів за часом модифікації
- Знайти файли за дозволом
- Пошук і заміна файлів
- Пошук тексту в кількох файлах
Пошук файлів за назвою
Ми можемо шукати всі файли з розширенням '.txt'. Для цього виконайте наведену нижче команду:
find . -name '*.txt'
Наведена вище команда перерахує всі текстові файли з поточного робочого каталогу. Розглянемо наведений нижче результат:
java версія linux
З наведеного вище результату всі файли з розширенням '.txt' перераховані командою find.
Пошук файлів за типом
Параметр '-type' використовується для визначення типу файлу.
Ось деякі з типів файлів:
- f: звичайний файл
- д: довідник
- l: символічні посилання
- c: символьні пристрої
- б: блокові пристрої
Розглянемо наведену нижче команду:
find . -type d -name '*.bak'
Наведена вище команда перерахує всі каталоги з розширенням «.bak». Розглянемо наведений нижче результат:
З наведеного вище результату команда 'find . -type d -name '*.bak' відображає всі каталоги, що закінчуються на '.bak'.
Знайти новіші файли
Параметр '-newer' допомагає шукати файли, новіші за згаданий файл. Розглянемо наведену нижче команду:
find . -newer msg.txt
Наведена вище команда відобразить усі файли, новіші за «msg.txt», із поточного робочого каталогу. Розглянемо наведений нижче результат:
З наведеного вище результату всі відображені файли є новішими за файл «msg.txt».
Знайдіть і видаліть файл
Параметр '-delete' використовується для видалення певного файлу. Нам потрібно бути дуже обережними під час використання цієї команди, тому що немає можливості скасувати її після виконання. Розглянемо наведену нижче команду:
find . -name Demo.txt -delete
Наведена вище команда видалить файл «Demo.txt» із поточного робочого каталогу. Розглянемо наведений нижче результат:
Знайдіть каталог
Параметр 'type -d' використовується для пошуку каталогу. Розглянемо наведену нижче команду:
find . type -depth -name Newdirectory
Наведена вище команда знайде розташування «Новий каталог». Розглянемо наведений нижче результат:
програма java hello
Пошук файлів за часом модифікації
Параметр «-mtime», за яким слідує кількість днів, використовується для пошуку файлів за модифікацією. Кількість днів може бути позитивною або негативною. Від’ємне значення використовуватиметься менше, ніж -1 використовується для останнього дня, і аналогічно +1 знайде файл більше одного дня тому. Розглянемо наведену нижче команду:
find ./Newdirectory -mtime -1
Наведена вище команда знайде файли, які були змінені протягом останнього дня. Розглянемо наведений нижче результат:
Знайти файли за дозволом
Параметр '-perm' використовується для пошуку файлів за дозволом. Виконайте команду find з параметром '-perm' і передайте необхідне значення. Розглянемо наведену нижче команду:
find ./ -perm 777
Команда вище перерахує файли з указаного каталогу, які кожен може читати, писати та виконувати.
Пошук і заміна файлів
Щоб знайти та замінити файли, нам потрібно поєднати команду find із командою sed. Для роботи з файлами використовуйте опцію '-exec' з командою find. Розглянемо наведену нижче команду:
find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ;
з наведеної вище команди буде замінено вказаний екземпляр. Розглянемо наведений нижче результат:
Пошук тексту в кількох файлах
Ми можемо створити іншу комбінацію команди find із командою grep, щоб знайти текст у різних файлах. Розглянемо наведену нижче команду:
find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ;
Наведена вище команда знайде рядки, що містять текст «demo» з усіх текстових файлів у каталозі «Newdirectory». Розглянемо наведений нижче результат:
З наведеного вище результату ми бачимо рядки з текстом «demo».
Пошук у кожному каталозі
$ find / -name file1 -type f -print
Наведена вище команда знаходить усі каталоги для звичайного файлу з назвою file1 і друкує його на екрані. Загалом, шукати файли таким чином не варто. Це може зайняти багато часу. Отже, найкраще згадати довідник. Кілька операційних систем можуть монтувати файлові системи (динамічні), які не сприятливі для команди find. Складніші імена файлів, що містять символи, унікальні для оболонки, можуть потребувати закриття в одинарні лапки.