[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rabota-v-cli-bash-kak-iskat-fayly-s-pomoshchyu-find":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":20,"progress":21,"seo":22},154,"kak-iskat-fayly-s-pomoshchyu-find",4,"rabota-v-cli-bash","Работа в CLI (Bash)","💻","Как искать файлы с помощью find?","Команда `find` рекурсивно обходит дерево каталогов и находит файлы по различным критериям: имени, типу, размеру, времени модификации, правам доступа.\n\n### Базовый синтаксис\n\n```bash\nfind [путь] [условия] [действие]\n```\n\n### Поиск по имени\n\n```bash\nfind . -name \"*.java\"                    # Все .java файлы (с учётом регистра)\nfind . -iname \"readme*\"                  # Без учёта регистра\nfind \u002Fopt -name \"application.yml\"        # Искать в \u002Fopt\nfind . -name \"*.java\" -o -name \"*.xml\"   # .java ИЛИ .xml файлы (-o = or)\nfind . -not -name \"*.class\"              # Все файлы, кроме .class\n```\n\n### Поиск по типу\n\n```bash\nfind . -type f                           # Только файлы\nfind . -type d                           # Только директории\nfind . -type l                           # Только символические ссылки\nfind . -type f -name \"*.log\"             # Файлы с расширением .log\n```\n\n### Поиск по размеру\n\n```bash\nfind . -size +100M                       # Файлы больше 100 МБ\nfind . -size -1k                         # Файлы меньше 1 КБ\nfind . -size +10M -size -100M            # От 10 до 100 МБ\n# Суффиксы: c (байты), k (КБ), M (МБ), G (ГБ)\n```\n\n### Поиск по времени\n\n```bash\nfind . -mtime -7                         # Изменённые за последние 7 дней\nfind . -mtime +30                        # Изменённые более 30 дней назад\nfind . -mmin -60                         # Изменённые за последние 60 минут\nfind . -newer reference.txt              # Новее указанного файла\n```\n\n### Поиск по правам и владельцу\n\n```bash\nfind . -user developer                   # Файлы пользователя developer\nfind . -group dev                        # Файлы группы dev\nfind . -perm 755                         # Файлы с правами ровно 755\nfind . -perm -u+x                        # Файлы, исполняемые владельцем\n```\n\n### Действия над найденными файлами\n\n```bash\n# Выполнить команду для каждого файла ({} заменяется именем файла)\nfind . -name \"*.log\" -exec rm {} \\;\n\n# Более эффективно — передать все файлы одной командой\nfind . -name \"*.log\" -exec rm {} +\n\n# Удаление (встроенное действие)\nfind \u002Ftmp -type f -mtime +30 -delete\n\n# Показать подробную информацию\nfind . -name \"*.java\" -ls\n\n# Спрашивать перед выполнением\nfind . -name \"*.tmp\" -ok rm {} \\;\n```\n\n### Исключение директорий\n\n```bash\n# Исключить target и .git\nfind . -type f -name \"*.java\" \\\n  -not -path \"*\u002Ftarget\u002F*\" \\\n  -not -path \"*\u002F.git\u002F*\"\n\n# Или с -prune (эффективнее — не заходит в директорию вовсе)\nfind . -path .\u002Ftarget -prune -o -name \"*.java\" -print\n```\n\n### find vs locate\n\n| Характеристика | `find` | `locate` |\n|---|---|---|\n| Скорость | Медленнее (обход файловой системы) | Мгновенный (по индексу) |\n| Актуальность | Всегда актуальный результат | Может быть устаревшим |\n| Гибкость | Множество критериев | Только по имени |\n| Обновление | Не требуется | `sudo updatedb` (обычно по cron) |\n\n```bash\nlocate \"application.yml\"          # Мгновенный поиск по базе\nsudo updatedb                     # Обновить базу\n```\n\n> **На собеседовании:** интервьюер ждёт знания разницы между `-exec {} \\;` (запуск по одному файлу) и `-exec {} +` (пакетный запуск — значительно быстрее). Частая ошибка — забывать `\\;` в конце `-exec`, что приводит к синтаксической ошибке.","","junior",[15,16,17,18,19],"cli","find","поиск файлов","linux","bash",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":35,"featuredSnippetReady":36},"Команда find в Linux: поиск файлов с примерами — Gymterview","Как использовать команду find для поиска файлов в Linux: поиск по имени, типу, размеру, дате, правам. Примеры с -name, -type, -size, -exec.","Команда find в Linux — поиск файлов по имени, типу, размеру | Gymterview","Полный разбор команды find: поиск файлов по имени, типу, размеру, дате модификации, правам доступа с ключами -name, -type, -size, -exec.",[28,17,29,30,31,32,33,34],"find linux","find команда","find -name","find -type","find -exec","find -size","bash find","Команда find рекурсивно ищет файлы по заданным критериям: -name — по имени, -type f\u002Fd — по типу (файл\u002Fдиректория), -size — по размеру, -mtime — по дате модификации, -perm — по правам. Действия: -exec для выполнения команд над найденными файлами, -delete для удаления.",true]