Пошук у Linux за допомогою find. Використання Find та Locate для пошуку файлів на сервері Linux Linux find файли, що не містять

Привіт усьому співтоваристві Хабра.
Це мій перший піст і, сподіваюся, не останній. Тому неминучі всілякі недоліки, баги і деяка рідкість тексту, так що прошу не судити :)
До написання цієї посади мене сподвиг топік «Консоль для новачка.» , де ISVir підняв гостру, на мій погляд, тему - як доступною мовою розповісти новачкам про консолю, не відлякавши їх уявною надскладністю.

Не збираюся відбирати у ISVir паритет, лише розповім про практичне використання кількох основних утиліт «на кожен день», без яких робота в консолі для мене неможлива.

Отже, що ми маємо:

find- Пошук файлів. дозволяє шукати файли, каталоги, симлінки та інші файлові об'єкти. find Дозволяє задати безліч опцій пошуку таких як:

  • пошук по масці (в імені)
  • контроль глибини вкладеності пошуку
  • пошук певних типів файлів (каталог, симлінки, сокети)
  • пошук за часом створення/модифікації файлу
  • можна встановити розмір (від і до в діапазоні) файлу
  • виконання дій з кожним знайденим файлом
у мані до find можна прочитати про інші опції та параметри.

Отже, з місця в кар'єр - пошук усіх файлів у каталозі /etc/, змінених за останню добу:

$find /etc/ -type f -mtime -1

розберемо, що ми написали:

Першим параметром завжди вказується початковий каталог пошуку.
опція -typeз параметром fкаже find, що потрібно шукати лише прості файли.
опція -mtimeз параметром -1 вказує find, що потрібно знайти файли, що змінилися за останню добу
"-" перед 1 ставить верхню межу діапазону, тобто. "все, що змінилося за останні 24 години"

Якби ми вказали "+" перед 1 , то findзнайшов би всіх файли, що змінилися від 01.01.1970 до вчорашнього дня (більше доби тому)
так само можна вказати точну дату, поставивши число без модифікатора.

Виконання дій із знайденими файлами.
опція -execприймає рядок з командою, яка буде виконуватись для кожного знайденого файлу
параметр передається команді позначається через {}
рядок повинен закінчуватися символами "\;"

Розглянемо приклад:
* Знайти в каталозі /tmp всі файли, що змінилися за останній місяць і скопіювати їх у каталог
/tmp/backup/

$find /tmp -type f -mtime -30 -exec cp () /tmp/backup \;

* видалити всі каталоги (рекурсивно) з ім'ям logs, що змінилися за останній день у каталозі
/var/www
$find /var/www -type d -mtime 0 -name logs -exec sudo rm -fr()\;

параметр dв опції -typeвказує на пошук тільки каталогів
опція -nameзадає пошук на ім'я.
тут варто додати, що видаляти в такий спосіб файли не оптимально (повільно).
для видалення find є вбудована опція -delete, яка відпрацьовує на порядок швидше.

Розглянемо утиліту awk.
awk- це мова програмування, призначений для обробки файлів. Мета його
розробки - полегшити постановку та вирішення багатьох завдань, пов'язаних із переробкою текстової інформації. По суті, awk- це утиліта, доступна з консолі.
Я зі зрозумілих причин не розглядатиму тут прийоми написання awk коду - розповім тільки про один важливий для нас прийом.

По-перше, awk може отримувати дані зі STDIN: $echo "test"|awk ...
по-друге, awk ефективний при написанні однорядків у консолі, т.к. виконує код, дані йому як параметр:


awk поділяє вхідний потік на поля і поміщає ці поля змінні види $1,$2,..$N
за замовчуванням, роздільник полів - пробіл, але за допомогою опції -F"_розділювач_"це можна перевизначити:
$head -4 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

$cat /etc/passwd|awk -F":" "(print $1)"
root
daemon
bin

Наприклад, у нас у каталозі /var/www є декілька сайтів. для кожного сайту існує каталог logs, куди пишуться логи апача (для цього сайту). і ось ми хочемо дізнатися сумарний обсяг цих логів, а також знайти всі логи більше 100Mb.

1. пошук великих логів:

$find /var/www -type f -name "access.log*" -size +100M
/var/www/site1/logs/access.log
/var/www/site2/logs/access.log.1.gz

2.підрахуємо сумарний обсяг логів:

Find /var/www/ -type f -name "access.log*" -exec du -k () \;|awk "(s+=$1)END(print s)"
5071604


так, не лякатися - зараз все поясню:)

Find шукає всі файли маски (access.log*) і для кожного запускає команду du.
команда duдрукує розмір файлу. опція -kробить висновок у кілобайтах.
далі запускається процесор awk, просто підсумовує перше поле рядків (числа) до змінної sта виводить значення змінної на екран.

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

#find / -user test1 -exec du -sm () \;|awk "(s+=$1)END(print s)"

тобто. тут за допомогою опції -user find шукає файли, що належать користувачеві test1 і кожного файла/каталога підраховуємо його розмір (команда du)
далі через конвейер ці дані приймає awk і, як ми робили вище, вважає їхню суму в Kb.

Ок. гадаю, на сьогодні вистачить.
піст вийшов досить великим, мабуть з незвички:)

Відразу хочу сказати - я не ставив за мету просто розповісти про використання find і awk, а навести приклади саме практичного застосування в реальних ситуаціях.
якщо стаття сподобається - продовжу писати у цьому напрямку.

Дякую, що приділили час.

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

Простий приклад використання команди find

Спочатку розглянемо простий приклад використання команди find для пошуку на комп'ютері файлів з ім'ям config. Ми будемо шукати файли config, починаючи з кореневого каталогу /. Для цього потрібно виконувати команду від імені користувача root , щоб мати достатньо прав доступу, інакше отримайте повідомлення «Permission denied». Отже, виконаємо команду:

Find / -name config -print

Команда означає: шукати файли з ім'ям config (-name config), починаючи з каталогу / (перший параметр команди find) і виводити імена файлів на екран (аргумент -print). Зазначу, що рекурсивний пошук, тобто при пошуку проглядаються всі вкладені директорії. Як бачите, все просто. Тепер розглянемо синтаксис команди та перейдемо до огляду її основних аргументів.

Синтаксис команди find

Загальний синтаксис команди find, який ви можете знайти в довідковому посібнику, може здатися не зовсім простим, тому я наведу більш зручний для сприйняття:

find [шлях] [опції] [критерії пошуку] [дії над файлами]

Шлях

Як шлях для пошуку можна використовувати як абсолютні, так і відносні шляхи, а також список шляхів, розділених пробілом.

Опції

Опції команди find вказуються, починаючи з символу «-», за яким слідує назва опції. Розглянемо основні настройки.

Критерії пошуку

У команди find може бути кілька критеріїв пошуку (їх також називають tests). Кожен критерій є певною умовою перевірки, яка повертає або true або false. Це можна порівняти з умовами оператора if у програмуванні. У процесі обробки чергового файлу команда find по черзі перевіряє кожен критерій, і якщо черговий критерій повертає false, тоді команда find переходить до наступного файлу. Критеріїв команди find досить багато, ми розглянемо тільки деякі з них.

-atime NВостаннє до файлу зверталися N днів тому.
-mtime NОстаннє змінення файлу було N днів тому.
-name шаблонНазва файлу (шаблон імені) без вказівки шляху. Рекомендується завжди укладати шаблон у лапки.
-newer інший_файлФайл змінено пізніше, ніж інший_файл.
-size [±] NРозмір файлу дорівнює N блокам, якщо вказано +N, тоді розмір файлу більше N, -N менше. Символ після N означає розмір блоку. b - 512 байт, з - байт, w - 2 байти, k - кілобайт, M - мегабайт, G - гігабайт.
-type CФайл типу C. Найчастіше використовувані значення З: d — каталог, f — файл.
-user Ім'я_користувачаФайл належить користувачеві з ім'ям Ім'я_користувача.

Приклади використання команди find із використанням критеріїв

Знайти у поточному каталозі звичайні файли (не каталоги), ім'я яких починається із символу "~".

Find. -type f -name "~*" -print

Знайти у поточному каталозі файли, змінені пізніше, ніж файл file.bak.

Find. -newer file.bak -type f -print

Оператори

Критерії можна поєднувати, використовуючи оператори. Нижче наведено оператори в порядку зменшення їх пріоритету.

У разі використання операторів критерії перевіряються у порядку їх пріоритету. Змінити порядок можна за допомогою дужок. Дужки потрібно виділяти за допомогою зворотного сліша.

Приклади використання команди find із використанням операторів

Знайти в поточному каталозі файли, що починаються з символу ~ або c temp і є саме звичайними файлами (-type f), а не каталогами.

Find. \(-name "~*" -or -name "temp*" \) -type f -print

Знайти в поточному каталозі (не обробляючи підкаталоги -maxdeph 1) звичайні файли (-file f) розміром більше 600 мегабайт і менше 1 гігабайта (-size) або файли ім'я яких закінчуються на .mpeg (-name).

Find. -maxdepth 1 \(\(-size +600M -and -size -1G \) -or -name "*.mpeg" \) -and -type f

Події над файлами

Коли команда find виконується, ви можете виконувати різні дії над знайденими файлами. Розглянемо основні їх.

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

Приклади використання команди find за допомогою дій

Знайти в поточному каталозі звичайні файли розміром більше 1000 байт і виконати з них команду ls -dils (дія ls).

Find. -size +1000c -type f -ls

Знайти у поточному каталозі звичайні файли, що починаються з символу тильда «~», і кожного файлу видавати запит на його видалення (на виконання команди rm).

Find. -name "~*" -type f -ok rm()\;

Висновок

У замітці ми розглянули дуже важливу та корисну Linux команду find, яка надає практично необмежені можливості для пошуку файлів за багатьма критеріями та шаблонами. А з використанням команд (дій) ви можете шукати файли та виконувати над ними будь-які операції.

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

    find -iname "ім'я файлу"

    • Введіть -iname замість -name , щоб проігнорувати регістр у наведеному імені файлу. Команда -name враховує регістр.
  1. Почніть пошук у кореневому каталозі.Щоб запустити пошук по всій системі, додайте модифікатор / . У цьому випадку команда find шукатиме файл у всіх каталогах, починаючи з кореневого.

    find / -iname "ім'я файлу"

    • Можна розпочати пошук у певному каталозі; для цього замініть / на шлях до каталогу, наприклад /home/max .
    • Можно використовувати. замість / , щоб шукати файл лише у поточному каталозі та його підкаталогах.
  2. Використовуйте символ узагальнення.* , щоб знайти файли, ім'я яких відповідає частині запиту. За допомогою символу узагальнення * можна знайти файл, повне ім'я якого невідоме або знайти всі файли з певним розширенням.

    find /home/max -iname "*.conf"

    • Ця команда знайде всі файли з розширенням.conf у папці користувача Max (та її підпапках).
    • Скористайтеся цією командою, щоб знайти всі файли, імена яких відповідають частині запиту. Наприклад, якщо на комп'ютері зберігається багато файлів, пов'язаних з WikiHow, знайдіть усі файли, ввівши "*wiki*" .
  3. Полегшіть керування результатами пошуку.Якщо результатів пошуку занадто багато, серед них важко знайти потрібний файл. Використовуйте символ | щоб результати пошуку фільтрувалися командою less. Це полегшить перегляд та фільтрування результатів пошуку.

    find /home/max -iname "*.conf" | less

    Знайдіть певні елементи.Використовуйте модифікатори, щоб у результатах пошуку відображати лише певні елементи. Можна шукати звичайні файли (f), каталоги (d), символьні посилання (l), пристрої посимвольного вводу-виводу (с) та блокові пристрої (b).

    find / -type f -iname "ім'я файлу"

  4. Відфільтруйте результати пошуку за розміром файлів.Якщо на комп'ютері зберігається безліч файлів зі схожими іменами, але відомий розмір шуканого файлу, відфільтруйте результати пошуку за розміром файлів.

    find/-size +50M -iname "ім'я файлу"

    • Ця команда знайде всі файли, розмір яких перевищує 50 Мб. Використовуйте модифікатор + або - для вказівки на збільшення або зменшення розміру. Якщо модифікатор + або - ні, команда знайде файли, розмір яких точно збігається із зазначеним розміром.
    • Результати пошуку можна відфільтрувати за байтами (c), кілобайтами (k), мегабайтами (M), гігабайтами (G) або блоками по 512 байт (b). Зверніть увагу, що наведені модифікатори враховують регістр.
  5. Використовуйте логічні оператори (бульові оператори), щоб об'єднати пошукові фільтри.Можна використовувати оператори -and, -or, -not, щоб об'єднати різні пошукові запити в один запит.

    find /travelphotos -type f -size +200k -not -iname "*2015*"

    • Ця команда знайде файли в папці «Travelphotos», розмір яких більше 200 кБ та в іменах яких немає числа 2015 року.

Оновлено: 02.11.2019 Опубліковано: 25.07.2016

Найуніверсальніша і найфункціональніша команда для пошуку в Linux find.Ця стаття є шпаргалкою з прикладами її використання.

Загальний синтаксис

find<где искать> <опции>

<где искать> — шлях до кореневого каталогу, звідки розпочинати пошук. Наприклад, find /home/user - шукати у відповідному каталозі. Для поточного каталогу слід використовувати точку «.».

<опции> — набір правил, якими виконувати пошук.

* за замовчуванням, рекурсивний пошук. Для пошуку в конкретному каталозі можна використовувати опцію maxdepth.

Опис опцій

Опція Опис
-name Пошук на ім'я.
-iname Реєстронезалежний пошук на ім'я.
-type

Тип пошуку. Можливі варіанти:

  • f - файл;
  • d - каталог;
  • l - Посилання;
  • p - pipe;
  • s - сокет.
-size Розмір об'єкту. Задається в блоках по 512 байт або просто байтах (із символом «c»).
-mtime Час зміни файлу. Вказується у днях.
-mmin Час зміни у хвилинах.
-atime Час останнього звернення до об'єкта днями.
-amin Час останнього звернення за хвилини.
-ctime Остання зміна власника або прав на об'єкт днями.
-cmin Остання зміна власника або прав у хвилинах.
-user Пошук за власником.
-group По групі.
-perm З певними правами доступу.
-depth Пошук повинен початися не з кореня, а з глибоко вкладеного каталогу.
-maxdepth Максимальна глибина пошуку за каталогами. -maxdepth 0 — пошук лише у поточному каталозі. За замовчуванням пошук рекурсивний.
-prune Виняток перелічених каталогів.
-mount Не переходити до інших файлових систем.
-regex На ім'я з регулярним виразом.
-regextype<тип> Тип ругулярного виразу.
-L Показує вміст символьних посилань (Сімлінк).
-empty Шукати пусті каталоги.
-delete Видалити знайдене.
-ls Висновок як ls-dgils
-print Показати знайдене.
-print0 Шлях до знайдених об'єктів.
-exec<команда> {} \; Виконати команду над знайденим.
-ok Видати запит перед виконанням -exec.

Повний набір актуальних опцій можна отримати командою man find.

Приклади використання find

Пошук файлу на ім'я

find/-name "file.txt"

* у цьому прикладі буде виконано пошук файлу з ім'ям file.txtпо всій файловій системі, що починається з кореня / .

Пошук файлу в частині імені:

find/-name "*.tmp"

* даною командою буде виконано пошук усіх папок або файлів у кореневій директорії /, закінчуються на .tmp

Знайти всі файли або папки, які починаються на sess_і закінчуються на cd

find. -name "sess_*" -a -name "*cd"

* -a:логічне І, -o:логічне АБО.

Пошук за датою

1. Пошук файлів, які змінювалися певну кількість днів тому:

find. -type f -mtime +60

* Ця команда знайде файли, які змінювалися більше 60 днів тому.

2. Пошук файлів за допомогою newer. Ця опція доступна з версії 4.3.3 (подивитися можна командою find --version).

а) дати зміни:

find. -type f -newermt "2019-11-02 00:00"

* покаже всі файли, які змінювалися, починаючи з 02.11.2019 00:00.

find. -type f -newermt 2019-10-31! -newermt 2019-11-02

* знайде всі файли, які змінювалися в проміжку між 31.10.2019 та 01.11.2019 (включно).

б) дату звернення:

find. -type f -newerat 2019-10-08

* усі файли, до яких зверталися з 08.10.2019.

find. -type f -newerat 2019-10-01! -newerat 2019-11-01

* всі файли, яких зверталися у жовтні.

в) дати створення:

find. -type f -newerct 2019-09-07

find. -type f -newerct 2019-09-07! -newerct "2019-09-09 07:50:00"

* файли, створені з 07.09.2019 00:00:00 до 09.09.2019 07:50

По типу

Шукати в поточній директорії та всіх її підпапках лише файли:

* f- Шукати тільки файли.

Пошук з прав доступу

Шукаємо всі справами на читання та запис:

find/-perm 0666

Знаходимо файли, доступ до яких має лише власник:

find/-perm 0600

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

find/-type f -exec grep -i-H "content" ()\;

* у даному прикладі виконано рекурсивний пошук усіх файлів у директорії / та виведено список тих, у яких міститься рядок content.

З сортуванням за датою модифікації

find /data -type f -printf "%TY-%Tm-%Td %TT %p\n" | sort -r

* команда знайде всі файли в каталозі /data, додасть до імені дату модифікації та відсортує дані на ім'я. У результаті одержуємо, що файли йдуть як їх зміни.

find /home/user/* -type d-exec chmod 2700()\;

* в даному прикладі ми шукаємо всі каталоги ( type d) у директорії /home/userі ставимо їм права 2700 .

Чистка за розкладом

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

Відкриваємо на редагування завдання cron:

І додаємо:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm()\;

* у даному прикладі ми видаляємо всі файли та папки з каталогу /tmp,старші старші 14 днів. Завдання запускається щодня 00:00 .
* Повний шлях до виконуваного файлу find дивимося командою which find- У різних UNIX системах він може розташовуватися в різних місцях.

Під час роботи в будь-якій операційній системі іноді виникає потреба у використанні інструментів для швидкого пошуку файлу. Актуально це і для Linux, тому нижче будуть розглянуті всі можливі способи пошуку файлів цієї ОС. Представлені будуть як інструменти файлового менеджера, так і команди, що використовуються в «Терміналі».

Якщо вам необхідно встановити безліч параметрів пошуку для знаходження потрібного файлу, то команда findнезамінна. Перед розглядом всіх її варіацій варто пройтися синтаксисом і опціями. Синтаксис має такий:

find шлях опція

де шлях- це директорія, у якій відбуватиметься пошук. Є три основні варіанти вказівки шляху:

  • / — пошук по кореневій та прилеглих до неї директоріям;
  • ~ - Пошук по домашній директорії;
  • ./ - Пошук у директорії, в якій користувач зараз.

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

Опцій у findдуже багато, і саме завдяки їм можна здійснити гнучке настроювання пошуку, задавши необхідні змінні:

  • -name- Проводити пошук, беручи за основу ім'я шуканого елемента;
  • -user- шукати файли, що належать до певного користувача;
  • -group- проводити пошук за певною групою користувачів;
  • -perm- показувати файли із зазначеним режимом доступу;
  • -size n- Шукати, беручи за основу розмір об'єкта;
  • -mtime +n -n- проводити пошук файлів, які змінювалися більше ( +n) або менше ( -n) днів тому;
  • -type- Шукати файли певного типу.

Типів елементів, що шукаються, теж багато. Ось їх список:

  • b- блоковий;
  • f- простий;
  • p- Іменований канал;
  • d- Каталог;
  • l- посилання;
  • s- Сокет;
  • c- Символовий.

Після детального розбору синтаксису та опцій команди findможна переходити безпосередньо до наочних прикладів. З огляду на розмаїття варіантів використання команди, наведені приклади будуть для всіх змінних, а лише найбільш використовуваних.

Спосіб 1: Пошук на ім'я (опція -name)

Найчастіше користувачі для пошуку по системі використовують опцію -name, Тож саме з неї і почнемо. Розберемо кілька прикладів.

Пошук з розширення

Допустимо, вам потрібно знайти в системі файл із розширенням ".xlsx", що знаходиться в директорії "Dropbox". Для цього необхідно використати таку команду:

find /home/user/Dropbox -name "*.xlsx" -print

З її синтаксису можна сказати, що пошук проводиться у директорії "Dropbox" ("/home/user/Dropbox"), а шуканий об'єкт має бути з розширенням ".xlsx". Зірочка свідчить про те, що пошук буде проведено по всіх файлах цього розширення, не беручи до уваги їхню назву. "-print"вказує на те, що результати пошуку будуть відображені на екрані.

Пошук на ім'я файлу

Наприклад, ви хочете знайти в директорії "/home"файл з назвою «lumpics»але розширення його невідоме. У такому разі потрібно виконати таке:

find ~ -name "lumpics*" -print

Як можна помітити, тут використовується символ «~» що означає, що пошук буде проходити в домашній директорії. Після налаштування "-name"вказано ім'я файлу ( "lumpics*"). Зірочка в кінці означає, що пошук буде проходити тільки по імені, не враховуючи розширення.

Пошук за першою літерою в імені

Якщо ви пам'ятаєте тільки першу літеру, з якої починається назва файлу, існує спеціальний синтаксис команди, який вам допоможе його відшукати. Наприклад, ви хочете знайти файл, який починається з літери від "g"до "l", і ви не знаєте у якому каталозі він знаходиться. Тоді вам необхідно виконати наступну команду:

find /-name "*" -print

Судячи з символу "/", що йде відразу після основної команди, пошук буде проведено, починаючи з кореневого каталогу, тобто у всій системі. Далі, частина «*» означає, що слово, що шукається, буде починатися з певної літери. У нашому випадку від "g"до "l".

До речі, якщо ви знаєте розширення файлу, то після символу «*» Ви можете його вказати. Наприклад, вам потрібно знайти той самий файл, але ви знаєте, що він має розширення ".odt". Тоді можна використати таку команду:

find / -name "*.odt" -print

Спосіб 2: Пошук режиму доступу (опція -perm)

Іноді необхідно знайти об'єкт, ім'я якого ви не знаєте, але знаєте, який режим доступу він володіє. Тоді вам потрібно використовувати опцію "-perm".

Користуватися їй досить просто, потрібно лише вказати місце пошуку та режим доступу. Ось приклад такої команди:

find ~ -perm 775 -print

Тобто пошук проводиться в домашньому розділі, а шукані об'єкти будуть мати доступ 775 . Також ви можете перед цим числом прописати символ «-», тоді знайдені об'єкти матимуть біти дозволів від нуля до вказаного значення.

Спосіб 3: Пошук за користувачем або групою (опції -user та -group)

У будь-якій операційній системі є користувачі та групи. Якщо ви хочете знайти об'єкт, що належить до однієї з цих категорій, то для цього можете використовувати опцію "-user"або "-group"відповідно.

Пошук файлу на ім'я його користувача

Наприклад, вам потрібно знайти у директорії "Dropbox"файл «Lampics», але ви не знаєте як він називається, а знаєте що він належить користувачеві "user". Тоді вам потрібно виконати наступну команду:

find /home/user/Dropbox -user user -print

У цій команді ви вказали необхідну директорію ( /home/user/Dropbox), вказали, що потрібно шукати файл, що належить користувачеві ( -user), і вказали, якому саме користувачеві цей файл належить ( user).

Пошук файлу за назвою його групи

Виконати пошук файлу, який належить певній групі, так само просто - вам потрібно всього лише замінити опцію "-user"на опцію "-group"та вказати назву цієї групи:

find / -groupe guest -print

Тобто ви вказали, що хочете знайти в системі файл, який належить до групи «guest». Пошук відбуватиметься по всій системі, про це свідчить символ «/» .

Спосіб 4: Пошук файлу за його типом (опція -type)

Знайти якийсь елемент в Linux певного типу досить просто, вам потрібно лише вказати відповідну опцію ( -type) та позначити тип. На початку статті були перераховані всі позначення типів, які можна використовувати для пошуку.

Наприклад, ви хочете знайти всі блокові файли в домашній директорії. У цьому випадку ваша команда виглядатиме так:

find ~ -type b -print

Відповідно, ви вказали, що проводите пошук за типом файлу, про що свідчить опція "-type", а далі визначили його тип, поставивши символ блокового файлу «b».

Так само ви можете вивести на екран всі каталоги в потрібній директорії, вписавши в команду символ "d":

find /home/user -type d -print

Спосіб 5: Пошук файлу за розміром (опція -size)

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

find /home/user/Dropbox -size 120M -print

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

find/-size 120M -print

Якщо ви знаєте розмір файлу приблизно, то на цей випадок є спеціальна команда. Вам потрібно прописати в «Терміналі»те саме, тільки перед вказівкою розміру файлу поставити знак «-» (якщо потрібно знайти файли менше вказаного розміру) або «+» (якщо розмір файлу буде більше вказаного). Ось приклад такої команди:

find /home/user/Dropbox +100M -print

Спосіб 6: Пошук файлу за датою зміни (опція -mtime)

Бувають випадки, коли найзручніше проводити пошук файлу за датою його зміни. У Linux для цього застосовується опція "-mtime". Користуватись їй досить просто, розглянемо все на прикладі.

Допустимо, в папці «Зображення»нам потрібно знайти об'єкти, які зазнавали змін протягом останніх 15 діб. Ось що потрібно прописати в «Терміналі»:

find /home/user/Зображення -mtime -15 -print

Як можна помітити, ця опція показує не лише файли, що змінювалися за вказаний термін, але й папки. Працює вона і у зворотний бік – ви можете знайти об'єкти, які були змінені пізніше зазначеного терміну. Для цього потрібно перед цифровим значенням вписати знак «+» :

find /home/user/Зображення -mtime +10 -print

GUI

Графічний інтерфейс багато в чому полегшує життя новачкам, які встановили дистрибутив Linux. Даний метод пошуку дуже схожий на той, що здійснюється в Windows, хоча і не може дати всіх тих переваг, що пропонує «Термінал». Але все по порядку. Отже, розглянемо, як зробити пошук файлів у Linux, використовуючи графічний інтерфейс системи.

Спосіб 1: Пошук через меню системи

Зараз буде розглянуто спосіб пошуку файлів через меню Linux. Дії будуть виконуватися в дистрибутиві Ubuntu 16.04 LTS, однак інструкція загальна для всіх.

Поділитися