logo

Знайдіть команду в Linux/Unix із прикладами

Команда 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 код абс

Присудки

Широко використовувані праймеріз:

    - шаблон імені:Він перевіряє, чи ім’я файлу збігається з шаблоном shell-glob.- тип типу:Він перевіряє, чи файл наданого типу.-друк:Це завжди дає справжню цінність. Він друкує поточне ім’я файлу та новий рядок у stdout.-print0:Це завжди дає справжню цінність. Він друкує поточне ім’я файлу та нульовий символ у stdout. Не потрібен POSIX.-exec програма [аргумент ...];:Це завжди дає справжню цінність. Він виконує програму з фіксованими заданими аргументами та поточним шляхом до файлу.-exec програма [аргумент ...] { } +:Це завжди дає справжню цінність. Він виконує програму з фіксованими заданими аргументами та якомога кількома шляхами. Майже для кожної реалізації інші входження {} означають додаткові копії даного імені (аспект, який не потрібен POSIX).-ok програма [аргумент ...];:Це те саме, що -exec, але поверне false або true, якщо програма дає 0.

Знайдіть значення за замовчуванням для реалізації -print у випадку, якщо умови виконуються, якщо вираз не використовує жодного з -ok, -exec, -print або -print0.

Оператори

Оператори покращують командні вирази пошуку. Вони згадуються в порядку убування:

    (вираз):Цей оператор може форсувати пріоритет.! вираз:Якщо вираз повертає false, він повертає true.
  • вираз1 вираз2 (або вираз1 -a вираз2 : І. вираз2 не обчислюється, якщо вираз1 хибний.
  • вираз1 -o вираз2 : АБО. expr2 не обчислюється, якщо expr1 має значення true.

Приклади команди find

Давайте розглянемо наступні приклади команди find:

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

Ми можемо шукати всі файли з розширенням '.txt'. Для цього виконайте наведену нижче команду:

 find . -name '*.txt' 

Наведена вище команда перерахує всі текстові файли з поточного робочого каталогу. Розглянемо наведений нижче результат:

java версія linux
Linux Find

З наведеного вище результату всі файли з розширенням '.txt' перераховані командою find.

Пошук файлів за типом

Параметр '-type' використовується для визначення типу файлу.

Ось деякі з типів файлів:

  • f: звичайний файл
  • д: довідник
  • l: символічні посилання
  • c: символьні пристрої
  • б: блокові пристрої

Розглянемо наведену нижче команду:

 find . -type d -name '*.bak' 

Наведена вище команда перерахує всі каталоги з розширенням «.bak». Розглянемо наведений нижче результат:

Linux Find

З наведеного вище результату команда 'find . -type d -name '*.bak' відображає всі каталоги, що закінчуються на '.bak'.

Знайти новіші файли

Параметр '-newer' допомагає шукати файли, новіші за згаданий файл. Розглянемо наведену нижче команду:

 find . -newer msg.txt 

Наведена вище команда відобразить усі файли, новіші за «msg.txt», із поточного робочого каталогу. Розглянемо наведений нижче результат:

Linux Find

З наведеного вище результату всі відображені файли є новішими за файл «msg.txt».

Знайдіть і видаліть файл

Параметр '-delete' використовується для видалення певного файлу. Нам потрібно бути дуже обережними під час використання цієї команди, тому що немає можливості скасувати її після виконання. Розглянемо наведену нижче команду:

 find . -name Demo.txt -delete 

Наведена вище команда видалить файл «Demo.txt» із поточного робочого каталогу. Розглянемо наведений нижче результат:

Linux Find

Знайдіть каталог

Параметр 'type -d' використовується для пошуку каталогу. Розглянемо наведену нижче команду:

 find . type -depth -name Newdirectory 

Наведена вище команда знайде розташування «Новий каталог». Розглянемо наведений нижче результат:

програма java hello
Linux Find

Пошук файлів за часом модифікації

Параметр «-mtime», за яким слідує кількість днів, використовується для пошуку файлів за модифікацією. Кількість днів може бути позитивною або негативною. Від’ємне значення використовуватиметься менше, ніж -1 використовується для останнього дня, і аналогічно +1 знайде файл більше одного дня тому. Розглянемо наведену нижче команду:

 find ./Newdirectory -mtime -1 

Наведена вище команда знайде файли, які були змінені протягом останнього дня. Розглянемо наведений нижче результат:

Linux Find

Знайти файли за дозволом

Параметр '-perm' використовується для пошуку файлів за дозволом. Виконайте команду find з параметром '-perm' і передайте необхідне значення. Розглянемо наведену нижче команду:

 find ./ -perm 777 

Команда вище перерахує файли з указаного каталогу, які кожен може читати, писати та виконувати.

Пошук і заміна файлів

Щоб знайти та замінити файли, нам потрібно поєднати команду find із командою sed. Для роботи з файлами використовуйте опцію '-exec' з командою find. Розглянемо наведену нижче команду:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

з наведеної вище команди буде замінено вказаний екземпляр. Розглянемо наведений нижче результат:

Linux Find

Пошук тексту в кількох файлах

Ми можемо створити іншу комбінацію команди find із командою grep, щоб знайти текст у різних файлах. Розглянемо наведену нижче команду:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

Наведена вище команда знайде рядки, що містять текст «demo» з усіх текстових файлів у каталозі «Newdirectory». Розглянемо наведений нижче результат:

Linux Find

З наведеного вище результату ми бачимо рядки з текстом «demo».

Пошук у кожному каталозі

 $ find / -name file1 -type f -print 

Наведена вище команда знаходить усі каталоги для звичайного файлу з назвою file1 і друкує його на екрані. Загалом, шукати файли таким чином не варто. Це може зайняти багато часу. Отже, найкраще згадати довідник. Кілька операційних систем можуть монтувати файлові системи (динамічні), які не сприятливі для команди find. Складніші імена файлів, що містять символи, унікальні для оболонки, можуть потребувати закриття в одинарні лапки.