Поиск с Find для файлов/директорий и смены прав доступа в Linux
Команда find
в Linux — это инструмент для поиска файлов и каталогов в файловой системе. Она позволяет выполнять сложные поисковые запросы, используя различные критерии, такие как имя файла, тип, размер, время изменения и другие атрибуты.
Основной синтаксис команды find
Синтаксис команды find
выглядит следующим образом:
1 |
|
- путь: Указывает каталог, в котором будет производиться поиск. Если путь не указан,
find
будет искать в текущем каталоге. - условия поиска: Критерии, по которым будет производиться поиск (например, имя файла, тип и т.д.).
- действия: Действия, которые будут выполнены над найденными файлами (например, вывести на экран, удалить и т.д.).
Примеры использования команды find
1. Поиск файлов по имени
Чтобы найти файлы с определённым именем, используйте опцию -name
. Например, чтобы найти файлы с именем example.txt
в каталоге /home/user
, выполните:
1 |
|
2. Поиск файлов с использованием подстановочных знаков
Вы можете использовать подстановочные знаки (*
и ?
) для поиска файлов с частичным совпадением. Например, чтобы найти все файлы с расширением .md
в текущем каталоге и его подкаталогах:
1 |
|
3. Поиск файлов по типу
Для поиска файлов определённого типа используйте опцию -type
. Например, чтобы найти все каталоги:
1 |
|
Чтобы найти только обычные файлы:
1 |
|
4. Поиск файлов по размеру
Вы можете искать файлы по их размеру с помощью опции -size
. Например, чтобы найти файлы размером больше 10 МБ:
1 |
|
5. Поиск файлов по времени изменения
Для поиска файлов, изменённых за определённый период, используйте опции -mtime
(изменённые) или -atime
(последний доступ). Например, чтобы найти файлы, изменённые за последние 7 дней:
1 |
|
6. Выполнение действий над найденными файлами
Вы можете выполнять действия над найденными файлами с помощью опции -exec
. Например, чтобы удалить все файлы с расширением .tmp
:
1 |
|
В этом примере {}
будет заменено на имя найденного файла, а \;
указывает на конец команды.
7. Поиск файлов с использованием логических операторов
Вы можете комбинировать условия поиска с помощью логических операторов -and
, -or
и -not
. Например, чтобы найти все файлы с расширением .md
или .txt
:
1 |
|
8. Изменить права доступа для директорий
1 |
|
-type d
— ищет только директории.Для каждой найденной директории выполняет
chmod 755
, что означает:- Владелец: чтение, запись, выполнение
- Группа: чтение, выполнение
- Остальные: чтение, выполнение
9. Изменить права доступа для файлов
1 |
|
-type f
— ищет только файлы.Для каждого файла выполняет
chmod 644
, что означает:- Владелец: чтение, запись
- Группа: чтение
- Остальные: чтение
В этом случае find
передаёт несколько найденных файлов за один вызов команды, что может быть эффективнее. Но в некоторых случаях нужно именно выполнять команду отдельно для каждого элемента — тогда используется \;
.
Итог
- Команда
find
с-exec
позволяет выполнять операции над каждым найденным файлом или директорией. {}
— это шаблон, который заменяется именем текущего найденного объекта.\;
— обозначает конец команды.