TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #191 6.63K
Прокачиваемся в find

Поиск файлов и каталогов через cli бывает гораздо более эффективен и гибок, нежели чем через GUI файловых менеджеров.

Команда find, как и grep, используется супер часто в командной строке. Она рекурсивно выводит пути к найденным файлам, спускаясь вглубь по иерархии.

Утилита имеет такой синтаксис:


find каталог параметры действие


Параметры - дополнительные опции, например, глубина поиска, фильтр по имени и т.д;

Действие - что будет выполнено с результатами поиска;

По синтаксису выше найдем пустые каталоги в tmp:


$ find /tmp -type d -empty -print


Детально ознакомиться с параметрами и прочей петрушкой можете по ссылке.

Поиск по типу файла

Флаг "-type" позволяет искать файлы по типу, среди которых:

1) f – простые файлы;
2) d – каталоги;
3) l – символические ссылки;
4) b – блочные устройства (dev);
5) c – символьные устройства (dev);
6) p – именованные каналы;
7) s – сокеты;

Перечисляем только каталоги:


$ find . -type d
.
./.ssh
./.cache


Поиск по размеру файла

Флаг "-size" позволяет произвести фильтрацию по размеру.

Выведем все файлы более 1 Гб (+1G):


$ find . -size +1G
./android-studio-ide-183.5692245-mac.dmg


"+" — поиск файлов больше заданного размера;

"-" — поиск файлов меньше заданного размера;

Отсутствие знака — поиск по полному совпадению с заданным размером;

Единицы измерения файлов: c (байт), k (Кбайт), M (Мбайт), G (Гбайт).

Поиск пустых файлов и каталогов

Параметр "-empty" позволяет найти пустые ресурсы:


$ find . -type d -empty
./datafiles


Не учитывать регистр при поиске

Если опция "-name" чувствительна к регистру, то "-iname" наоборот:


$ find . -name "new*"
./new test file
./newFile


$ find . -iname "new*"
./NewFile
./new test file
./newFile


Несколько каталогов

Для поиска по нескольким каталогам просто используем перечисление:


 find ./dir1 ./dir2 -type f -name "*.c"


Поиск по правам доступа

Команда нам позволяет искать ресурсы по определенной маске прав, например, 0664:


$ find . -type f -perm 0664


Вместо числового представления маски можно использовать символьное для: u (user) g (group) и o (other).

Выполним поиск файлов доступных владельцу для чтения/записи:


$ find /etc -perm /u=rw


Чтобы немного въехать в суть прав доступа, можно просмотреть вот этот пост.

Ограничение глубины поиска

Если нам нужно указать максимальную глубину поиска, используем "-maxdepth".

Следующий запуск find пройдется только по самому верхнему уровню указанного каталога:


$ find /etc -maxdepth 1


Операторы

Для инвертирования шаблона либо объединения можно применять операторы: and, or, not.

Флаг "-and" обычно можно опустить, т.к. он ставится по дефолту.

Найдем файлы, которые не соответствуют шаблону:


$ find . -not -name "test*"


Либо найдем все файлы, начинающиеся на "test", но без расширения "php":


$ find . -name "test" -not -name "*.php"


Можем также объединить несколько условий и найти ресурсы, которые принадлежат "xoadmin" и имеют размер "< 100 байт":


$ find . -user xoadmin -and -size -100c -type f


Если нужно учесть принадлежность к еще какому-нибудь пользователю, используем "or":


$ find . \( -user xoadmin -or -user vasya \) -and -size -100c -type f


Действия

К команде можно добавить действия, которые будут выполнены с результатами поиска:

1) -delete: удаляет результаты поиска;


$ find . -empty -delete


2) -ls: выводит доп информацию;

3) -print: показывает полный путь к найденным файлам (стоит по умолчанию);

4) -exec: выполняет указанную команду для найденных ресурсов;


$ find . -empty -exec rm -rf {} +


Тут мы удаляем все пустые файлы и каталоги одним вызовом "rm -rf".

Можем через exec найти файлы и прочитать их:


$ find . -type f -exec cat {} \;


Вместо {} подставляется путь к файлу. Если команда оканчивается на "\;", значит она будет выполнена для каждой строки с результатом.

LinuxCamp | #utils
  • 👍 48
  • 🔥 9
  • ⚡ 8
  • ❤‍🔥 4
  • ❤ 1
  • 👏 1
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →