Найти и заменить слова в текстовом файле рекурсивно

У меня есть дерево папок внутри этих папок, есть много текстовых файлов. Эти файлы имеют одно и то же имя «log.txt» и тот же формат. Например, внутри каждого файла мы видим несколько строк, например:

date name . . . 

Как я могу использовать команду find для поиска всех текстовых файлов «log.txt» в этих папках дерева, а затем заменить слово «дата» внутри каждого текстового файла словом «датирование»?

2 Solutions collect form web for “Найти и заменить слова в текстовом файле рекурсивно”

Предполагая, что вы находитесь в корне дерева (иначе замените «.» На имя каталога). Вы можете заменить «log.txt» на «* .txt» или что угодно.

 find . -type f -name 'log.txt' -exec sed -i 's/date/dating/g' {} \; 

Вы можете использовать find и sed из корневого каталога:

 find . -type f -name 'log.txt' -exec sed -i 's/^date$/dating/' {} + 
  • find . -type f -name 'log.txt' find . -type f -name 'log.txt' найдет все файлы log.txt рекурсивно

  • В предикате -exec find , sed -i 's/^date$/dating/' {} + заменяет date в строке файлов с dating , на месте.

  • Конкретная замена уровня столбца
  • Как добавить новые строки из другого файла с помощью sed
  • Найти и заменить с помощью sed с помощью подстановочных знаков при поиске и замене
  • «Скобки не сбалансированы», хотя я избежал этого?
  • Каковы альтернативные инструменты для поиска файлов в полном объеме?
  • Как свернуть 'grep -c <токен> * .h * .cpp' в один счет?
  • Почему sed дает мне ошибку в отношении неиспользуемого `s '?
  • BSD sed: заменить только N-е вхождение шаблона
  • Как объединить все файлы в заданном каталоге по дате, где я хочу, чтобы самый новый файл был сверху?
  • Как захватить содержимое строки до определенной строки?
  • условная окраска в grep
  • Linux и Unix - лучшая ОС в мире.