Поиск с 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позволяет выполнять операции над каждым найденным файлом или директорией. {}— это шаблон, который заменяется именем текущего найденного объекта.\;— обозначает конец команды.