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

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

xargs -0: имена с пробелами

средне~7 мин

В /root/docs и его подкаталогах лежат десятки .txt-файлов, у многих в именах пробелы (my file.txt, sub dir/part 1.txt). Допиши строку DONE в конец каждого .txt-файла (не затирая то, что в нём уже есть) связкой find … | xargs …, устойчивой к пробелам. Файлы .md не трогай.

Что потренируешь:
  • xargs
  • -0
  • find -print0
  • нулевой разделитель
  • пробелы в именах

Разбор темы

Имена файлов могут содержать пробелы и переводы строк, поэтому передавать их построчно через xargs небезопасно — он режет ввод по пробельным символам. Каноничное решение — нулевой байт как разделитель: find … -print0 завершает каждое имя \0 (в именах файлов нулевой байт невозможен), а xargs -0 читает ввод в этом же формате. Эта пара — стандарт для надёжной обработки произвольных имён; те же -z/-0 есть у grep, sort, sed.

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

  1. DONE в конце каждого .txt
  2. прежнее содержимое сохранено
  3. .md не тронуты

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