[Информационная безопасность, Habr, Системное администрирование, Разработка под Linux] Команда find в Linux – мощный инструмент сисадмина
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Иногда критически важно быстро найти нужный файл или информацию в системе. Порой можно ограничиться стандартами функциями поиска, которыми сейчас обладает любой файловый менеджер, но с возможностями терминала им не сравниться.
Команда 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.png
find: `/home/tisha/testfiles': Permission denied
find: `/home/tisha/data': Permission denied
/home/tisha/water.png
find: `/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 может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.
оригинал
===========
Источник:
habr.com
===========
Похожие новости:
- [Системное администрирование, IT-инфраструктура, Управление разработкой, DevOps] Митап по SRE: вторник, 3 ноября, 19:00 по Москве
- [Системное администрирование, Adobe Flash, Браузеры, Софт] Microsoft выпустила опциональное обновление KB4577586, которое удаляет Adobe Flash Player из ОС Windows
- [Системное администрирование, IT-инфраструктура] Уже в четверг пройдёт Online Monitoring Day
- [Информационная безопасность, JavaScript, HTML] В британском реестре компаний обнаружили XSS
- [Информационная безопасность, Платежные системы, Антивирусная защита, Дизайн мобильных приложений, Монетизация мобильных приложений] Как украсть со счета деньги, которых у вас не было?
- [Информационная безопасность, Open source, Системное администрирование, IT-инфраструктура] Доступна версия Zabbix 5.2
- [Системное администрирование, Go] Чекалка: ваш личный Hosttracker (и не только)
- [Информационная безопасность, Антивирусная защита, Резервное копирование, Конференции] Итоги крупнейшего ИТ-ивента Acronis по киберзащите — #AcronisCyberSummit 2020
- [Информационная безопасность, Системное администрирование, IT-инфраструктура, DevOps] Обеспечиваем безопасность в гибкой разработке и CI/CD (перевод)
- [Системное администрирование, Анализ и проектирование систем, Управление разработкой, DevOps] Почему бизнес хочет DevOps и что нужно знать инженеру, чтобы говорить с ним на одном языке
Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_habr, #_sistemnoe_administrirovanie (Системное администрирование), #_razrabotka_pod_linux (Разработка под Linux), #_terminal_linux (терминал linux), #_komanda_find (команда find), #_sistemnoe_administrirovanie_linux (системное администрирование linux), #_sistemnoe_administrirovanie (системное администрирование), #_blog_kompanii_alexhost (
Блог компании AlexHost
), #_informatsionnaja_bezopasnost (
Информационная безопасность
), #_habr, #_sistemnoe_administrirovanie (
Системное администрирование
), #_razrabotka_pod_linux (
Разработка под Linux
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:51
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Иногда критически важно быстро найти нужный файл или информацию в системе. Порой можно ограничиться стандартами функциями поиска, которыми сейчас обладает любой файловый менеджер, но с возможностями терминала им не сравниться. Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:
Данная команда будет очень полезна системным администраторам для:
Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска. Синтаксис команды find: $ find directory-to-search criteria action
Где:
Поиск по имени Следующая команда ищет файл s.txt в текущем каталоге: $ find . -name "s.txt"
./s.txt Где:
В данном случае критерий -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.png find: `/home/tisha/testfiles': Permission denied find: `/home/tisha/data': Permission denied /home/tisha/water.png find: `/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 позволяет искать файлы по типу, которые бывают следующих видов:
Например, указав критерий -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 Единицы измерения файлов:
Поиск пустых файлов и каталогов Критерий -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. Операторы Для объединения нескольких критериев в одну команду поиска можно применять операторы:
Например, чтобы найти файлы размером более 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 Полезен, когда необходимо найти и удалить все пустые файлы, например: $ find . -empty -delete
Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print. -exec: Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска. -exec command {} \;
Где:
С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска: $ find . -empty -exec rm {} \;
Другой пример использования действия -exec: $ find . -name "*.jpg" -exec cp {} /backups/fotos \;
Таким образом можно скопировать все .jpg изображения в каталог backups/fotos Заключение Команду find можно использовать для поиска:
С полученными результатами можно сразу выполнять различные действия, такие как:
Команда find может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться. оригинал =========== Источник: habr.com =========== Похожие новости:
Блог компании AlexHost ), #_informatsionnaja_bezopasnost ( Информационная безопасность ), #_habr, #_sistemnoe_administrirovanie ( Системное администрирование ), #_razrabotka_pod_linux ( Разработка под Linux ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:51
Часовой пояс: UTC + 5