Русский
Русский
English
Статистика
Реклама

Команда find в Linux мощный инструмент сисадмина


Иногда критически важно быстро найти нужный файл или информацию в системе. Порой можно ограничиться стандартами функциями поиска, которыми сейчас обладает любой файловый менеджер, но с возможностями терминала им не сравниться.


Команда find это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:


  • Дате добавления.
  • Содержимому.
  • Регулярным выражениям.

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


  • Управления дисковым пространством.
  • Бэкапа.
  • Различных операций с файлами.

Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.


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


$ find directory-to-search criteria action

Где:


  • directory-to-search (каталог поиска) это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
  • criteria (критерий) критерий, по которым нужно искать файлы;
  • action (действие) что делать с каждым найденным файлом, соответствующим критериям.

Поиск по имени


Следующая команда ищет файл s.txt в текущем каталоге:


$ find . -name "s.txt"./s.txt

Где:


  • . (точка) файл относится к нынешнему каталогу
  • -name критерии по которым осуществляется поиск. В данном случае поиск по названию файла.

В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать iname.


$ find . -iname "s.txt"./s.txt./S.txt

Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:


$ find . -name "*.png"./babutafb.png./babutafacebook.png./Moodle2.png./moodle.png./moodle/moodle1.png./genxfacebook.png

Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:


$ find /home -name "*.png"find: `/home/babuta/.ssh': Permission denied/home/vagrant/Moodle2.png/home/vagrant/moodle.png/home/tisha/hello.pngfind: `/home/tisha/testfiles': Permission deniedfind: `/home/tisha/data': Permission denied/home/tisha/water.pngfind: `/home/tisha/.cache': Permission denied

Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.


find /home -name "*.jpg" 2>/dev/null/home/vagrant/Moodle2.jpg/home/vagrant/moodle.jpg/home/tisha/hello.jpg/home/tisha/water.jpg

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


Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:


  • f простые файлы;
  • d каталоги;
  • l символические ссылки;
  • b блочные устройства (dev);
  • c символьные устройства (dev);
  • p именованные каналы;
  • s сокеты;

Например, указав критерий -type d будут перечислены только каталоги:


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

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


Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.


  • "+" Поиск файлов больше заданного размера
  • "-" Поиск файлов меньше заданного размера
  • Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.

В данном случае поиск выведет все файлы более 1 Гб (+1G).


$ find . -size +1G./Microsoft_Office_16.29.19090802_Installer.pkg./android-studio-ide-183.5692245-mac.dmg

Единицы измерения файлов:


  • c Байт
  • k Кбайт
  • M Мбайт
  • G Гбайт

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


Критерий -empty позволяет найти пустые файлы и каталоги.


$ find . -empty./.cloud-locale-test.skip./datafiles./b.txt..../.cache/motd.legal-displayed

Поиск времени изменения


Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:


$ find . -cmin -60../a.txt./datafiles

Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).


Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.


$ find . -cmin +60

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


Критерий -atime позволяет искать файлы по времени последнего доступа.


$ find . -atime +180

Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).


Поиск по имени пользователя


Опция user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:


$ find /home -user tisha 2>/dev/null

Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.


Поиск по набору разрешений


Критерий -perm ищет файлы по определенному набору разрешений.


$ find /home -perm 777

Поиск файлов с разрешениями 777.


Операторы


Для объединения нескольких критериев в одну команду поиска можно применять операторы:


  • -and
  • -or
  • -not

Например, чтобы найти файлы размером более 1 Гбайта пользователя tisha необходимо ввести следующую команду:


$ find /home  -user tisha  -and  -size +1G  2>/dev/null

Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.


$ find /home \( -user pokeristo -or -user tisha \)  -and  -size +1G  2>/dev/null

Перед скобками нужно поставить обратный слеш "\".


Действия


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


  • -delete Удаляет соответствующие результатам поиска файлы
  • -ls Вывод более подробных результатов поиска с:
    • Размерами файлов.
    • Количеством inode.
  • -print Стоит по умолчанию, если не указать другое действие. Показывает полный путь к найденным файлам.
  • -exec Выполняет указанную команду в каждой строке результатов поиска.

-delete


Полезен, когда необходимо найти и удалить все пустые файлы, например:


$ find . -empty -delete

Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print.


-exec:


Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска.


-exec command {} \;

Где:


  • command это команда, которую вы желаете выполнить для результатов поиска. Например:
    • rm
    • mv
    • cp
  • {} является результатами поиска.
  • \; Команда заканчивается точкой с запятой после обратного слеша.

С помощью exec можно написать альтернативу команде delete и применить ее к результатам поиска:


$ find . -empty -exec rm {} \;

Другой пример использования действия -exec:


$ find . -name "*.jpg" -exec cp {} /backups/fotos \;

Таким образом можно скопировать все .jpg изображения в каталог backups/fotos


Заключение


Команду find можно использовать для поиска:


  • Файлов по имени.
  • Дате последнего доступа.
  • Дате последнего изменения.
  • Имени пользователя (владельца файла).
  • Имени группы.
  • Размеру.
  • Разрешению.
  • Другим критериям.

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


  • Удаление.
  • Копирование.
  • Перемещение в другой каталог.

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


image

Источник: habr.com
К списку статей
Опубликовано: 28.10.2020 14:12:50
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании alexhost

Информационная безопасность

Habr

Системное администрирование

Разработка под linux

Терминал linux

Команда find

Системное администрирование linux

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru