Find: обзор функций и характеристик на CentOS
Сегодня, мы с вами разберем одну из полезных и часто используемых команд для работы с текстовыми файлами, а именно поиска файлов, в системе Linux. Как вы уже могли догадаться, это команда find. С ее помощью вы можете искать файлы по имени, размеру, дате создания, модификации или другим критериям. В принципе, это команда обладает широким рядом возможностей для поиска файлов, но вот у новичков иногда вызывает некоторые сложности из-за своего синтаксиса.
Начнем, с общего синтаксиса команды find, который выглядит так:
find [список_каталогов] критерий_поиска
при чем параметр “список каталогов” определяет место, где нужно искать данный файл.
Касательно “критерия поиска”, принято, что программа find будет искать тот критерий, который начинается с : "-", "(", ")"', "," или "!"
Говоря же о заданном пути, внесем ясность в значение некоторых символов. Начнем с того, что путь, это каталог в котором и будет происходить поиск. Для того, чтобы задать поиск в нужном каталоге используют:
. — для поиска в текущем каталоге;
/ — для поиска от корневого каталога;
~ — для поиска в домашнем каталоге.
Чаще всего, поиск проводится по именам файлов, где "критерий_поиска" задается как "-name имя_файла".
Разберем основные опции поиска через команду find.
-name — поиск файлов по имени;
-user — поиск файлов, что принадлежат конкретному пользователю;
-group — поиск файлов, что принадлежат конкретной группе;
-perm — поиск файлов, в которых указан режим доступа;
-type — поиск файлов определенного типа6 которые также делятся;
size n — поиск файлов с размером n-количества единиц;
-mtime -n +n — поиск файлов, наполнение которых менялось меньше чем (-) или больше чем (+) дней назад.
Еще, с помощью команды find, вы можете менять права для папок и файлов. Представим, что вам нужно рекурсивно задать права на директории и файлы, которые в них находятся.
Например: стандартная ситуация когда на папки нужно задать права 755, а на файлы 644.
Сначала меняем права на файлы:
find /home/tatiana/public_html -type f -exec chmod 0644 {} \;
Затем, на все папки:
find /home/tatiana/public_html -type d -exec chmod 0755 {} \;
Также, с помощью find вы можете совершать поиск файлов с определенным расширением. Для этого, вы используете звездочку «*».
Например: вам нужно найти все файлы с расширением «.db». Для этого, прописываете * которая заменяет любой набор символов.
find /var/tatiana -type f -name *.db
Если же вам нужно найти файлы отдельно от папок, для поиска указываете имя дерева каталогов, (у нас это var/tatiana), затем, через опцию “-name” указываете имя своего искомого файла.
Например: вы хотите увидеть все файлы с расширением ‘tex’ в рабочей папке. Поэтому, независимо от написания этих файлов, вы вводите:
Find ~ -iname ' *.tex '