Заметки программиста

Рекурсивно заменить строку с символом /

Чтобы рекурсивно заменить строку с символом / в файлах в консоли Ubuntu, используйте команду find в сочетании с sed. Замените косую черту в шаблоне sed на другой символ, например, # или @, или `\`, и используйте опцию -i для редактирования файлов на месте. 

Пример команды

Код

find /путь/к/директории -type f -print0 | xargs -0 sed -i 's@старая@новая@g'

Пояснение:

  • find /путь/к/директории: Начните поиск с указанной директории.
  • -type f: Ищите только файлы.
  • -print0: Печатает полные имена файлов, разделяя их нулевым байтом, что безопасно для имен файлов с пробелами или спецсимволами.
  • xargs -0: Принимает вывод find как аргументы для следующей команды, обрабатывая нулевые байты.
  • sed -i: Используйте sed для выполнения замены, -i означает редактирование файлов «на месте» (in-place).
  • 's/старая/новая/g': Шаблон замены. Поскольку в строках есть /, его можно заменить на другой символ, например # или `\`.
    • Пример с другим символом: 's#старая/строка#новая/строка#g'.
    • Пример с экранированием символа /'s/старая\/строка/новая\/строка/g'