Практическое задание

Эта задача — шаг 19 курса «find и xargs: поиск и массовые операции»

find + xargs grep

средне~5 мин

Под /root/src (включая подкаталоги) — много файлов. Найди .txt-файлы, которые содержат слово TODO, и запиши их полные пути (/root/src/…, по одному на строку) в /root/todo.txt. Используй связку find … | xargs grep. Файлы с другими расширениями в список не включай.

Что потренируешь:
  • find
  • xargs
  • grep -l
  • конвейер
  • поиск по содержимому

Разбор темы

Классическая связка «найти файлы — обработать их содержимое»: find отбирает файлы по имени/типу, а xargs передаёт их пачкой во внешнюю команду — здесь grep. Ключ grep -l (list) выводит лишь имена файлов с совпадением, что удобно для отчётов и дальнейшей автоматизации. Для устойчивости к необычным именам применяют -print0/-0. Альтернатива — find -exec grep -l {} +, но xargs часто короче и позволяет добавить -P для параллелизма.

Что проверяется

  1. найдены все .txt с TODO
  2. лишних файлов нет

Как это выглядит