ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

6 минут чтени€

 оманда find - неверо€тно мощный инструмент, и умение управл€ть им может быть полезным и облегчить работу в системе Linux. ќна поможет эффективно выполн€ть различные задачи системного администрировани€, такие как управление дисковым пространством, рекурсивные операции с файлами и резервное копирование.

 ак пользоватьс€ командой Find Linux

 оманда Find Linux выполн€ет поиск файлов и папок по заданным критери€м и позвол€ет выполн€ть действи€ с результатами поиска. —интаксис поиска таков:

$ find directory-to-search criteria action

где:

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

 ритерии

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

¬от простой пример. —ледующа€ команда выполн€ет поиск файла a.txt в текущем каталоге:

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

√де:

  • . - ссылаетс€ на текущий каталог
  • -name Ц определ€ет критерии дл€ сопоставлени€

ѕо умолчанию, ключевое слово -name чувствительно к регистру и игнорирует файл A.txt. „тобы убедитьс€, что поиск не учитывает регистр, используйте -iname:

$ find . -iname "a.txt"
./a.txt
./A.txt

ƒл€ поиска всех файлов изображений .jpg в текущем каталоге используйте шаблон подстановочных знаков * .jpg:

$ find . -name "*.jpg"
./genxfacebook2.jpg
./genxfacebook1.jpg
./Moodle2.jpg
./moodle.jpg
./moodle/moodle1.jpg
./genxfacebook.jpg

ћожно использовать им€ каталога дл€ поиска. Ќапример, дл€ поиска всех изображений .jpg в каталоге /home:

$ find /home -name "*.jpg"
find: `/home/ubuntu/.ssh': Permission denied
/home/vagrant/Moodle2.jpg
/home/vagrant/moodle.jpg
/home/me/hello.jpg
find: `/home/me/testfiles': Permission denied
find: `/home/me/data': Permission denied
/home/me/water.jpg
find: `/home/me/.cache': Permission denied

ѕри наличии слишком большого количества сообщений об отказе в доступе в конце команды можно добавить 2 >/dev/null. Ёто перенаправл€ет сообщени€ об ошибках на устройство /dev/null и выдает чистые выходные данные:

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

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

— помощью ключевого слова -type можно искать файлы по типу. “ипы файлов могут быть:

f plain files
d directories
l symbolic links
b block devices
c character devices
p named pipes
s sockets

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

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

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

¬озможно, потребуетс€ выполнить поиск больших файлов и удалить их. ¬ следующем примере за после ключевого слова -size следует строка 1G. Ёто приведет к поиску всех файлов размером более 1 √Ѕ.

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

«нак + означает, что нужно искать файлы, размер которых больше указанного числа. —имвол минус - может использоватьс€ дл€ обозначени€ меньшего значени€, чем указано. »спользование без знака означало бы точное совпадение размера.

«а номером следует единица измерени€ размера файла. ≈диницами измерени€ могут быть:

  • b - Ѕлоки по 512 байтов
  • c - Ѕайты
  • k -  илобайты
  • M - ћегабайты
  • G - √игабайты

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

»спользуйте параметр -empty дл€ поиска пустых каталогов и файлов:

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

ѕоиск по времени изменени€ файла

— помощью ключевого слова -cmin можно выполн€ть поиск всех файлов и каталогов по времени создани€ или изменени€. ƒл€ поиска всех файлов, измененных за последние 60 минут (менее 60), используйте -60 следующим образом:

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

ƒл€ файлов, измененных в любое врем€ до последних 60 минут, используйте 60.

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

ѕоиск файлов можно выполнить по времени последнего доступа с помощью ключевого слова -atime. Ќапример, следующа€ команда выполн€ет поиск файлов, доступ к которым не осуществл€лс€ за последние 180 дней:

$ find . -atime +180

»х можно переместить на устройство резервного копировани€, если недостаточно места на диске.

ѕоиск по имени пользовател€

— помощью параметра -user username можно искать все файлы и каталоги, принадлежащие конкретному пользователю. Ќапример, следующа€ команда выполн€ет поиск всех файлов и каталогов, принадлежащих пользователю ubuntu в каталоге /home:

$ find /home -user ubuntu 2>/dev/null
/home/ubuntu
/home/ubuntu/.bash_logout
/home/ubuntu/.bashrc
/home/ubuntu/.ssh
/home/ubuntu/.profile

ѕоиск по режиму доступа

’отите найти файлы с определенным режимом доступа, то есть имеющие определенный набор разрешений? »спользуйте ключевого слова -perm. ¬ следующем примере выполн€етс€ поиск файлов с разрешени€ми 777:

$ find /home -perm 777

ќператоры

ƒл€ объединени€ нескольких ключевых слов в одной команде можно использовать следующие три логических оператора:

  • -and
  • -or
  • -not

Ќапример, следующа€ команда выполн€ет поиск файлов, превышающих 100MB, которыми владеет указанный пользователь:

$ find /home  -user me  -and  -size +100M  2>/dev/null
/home/me/kali-linux-2020.3-installer-netinst-i386.iso

—ледующа€ команда ищет файлы, размер которых превышает 100MB, принадлежащие пользователю me или пользователю vagrant:

$ find /home \( -user vagrant -or -user me \)  -and  -size +100M  2>/dev/null
/home/vagrant/LibreOffice_7.0.1_Linux_x86-64_deb.tar.gz
/home/me/kali-linux-2020.3-installer-netinst-i386.iso

Ќеобходимо поместить символ обратной косой черты перед скобками, чтобы предотвратить попытку их интерпретации оболочкой.


ƒействи€

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

  • -delete - ”даление файлов, соответствующих критери€м поиска
  • -ls - ќтображение подробных выходных данных ls с размерами файлов и количеством входов
  • -print - ѕоказывает полный путь к соответствующим файлам. Ёто действие по умолчанию, если не указано другое действие
  • -exec - ¬ыполн€ет следующую команду в каждой строке результатов поиска

»так, если вы хотите найти все пустые файлы и удалить их, вы можете сделать это следующим образом:

$ find . -empty -delete
¬нимание! ѕеред использованием действи€ удалени€ всегда безопасно выполнить команду один раз с действием -print и подтвердить результаты.

ƒействие -exec €вл€етс€ особым. ќн позвол€ет выполнить выбранную команду в результатах поиска. Ёто так:

-exec command {} \;

«десь

  • command Ц команда, которую требуетс€ выполнить в результатах поиска, например, rm, mv или cp.
  • {} Ц представл€ет результаты поиска.
  •  оманда заканчиваетс€ точкой с зап€той с обратной косой чертой.

“аким образом, команда поиска и удалени€ всех пустых файлов может быть написана следующим образом:

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

¬от еще один пример использовани€ действи€ -exec. —ледующа€ команда копирует все PNG-файлы образов в каталог backup/images:

$ find . -name "*.png" -exec cp {} /backups/images \;

«аключение

 оманда find используетс€ дл€ поиска файлов по имени, дате последнего доступа, дате последнего изменени€, имени пользовател€ (владельца), имени группы, размеру, разрешени€м и другим различным критери€м. Ёти результаты поиска позвол€ют выполн€ть с ними такие действи€, как удаление, копирование или перемещение в другое расположение.

ѕосле того, как вы освоите команду find, она может помочь вам и упростить задачи системного администрировани€. » ключ к его освоению - это его практика и использование!