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

У меня есть дерево папок внутри этих папок, есть много текстовых файлов. Эти файлы имеют одно и то же имя «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
  • Как скопировать строки из нескольких файлов в один новый файл и сохранить имя файла?
  • Сортировка нескольких файлов csv на основе двух столбцов в каталоге
  • Как извлечь данные из файла и построить имя файла из одного из значений
  • Как подсчитать вхождения каждого слова, принадлежащего файлу, во все количество файлов `n`, переданных в качестве аргументов?
  • Как выполнить операцию по отдельным матчам в полной строке
  • Файлы с изменением хвоста
  • Как удалить несколько строк в каждом вхождении в файл?
  • Как изменить все строки в файле python от snake_case до camelCase в sed
  • Диапазон значений grep (/ sed / awk)
  • Как мне искать файл для строки, а затем использовать его как переменную?
  • Linux и Unix - лучшая ОС в мире.