递归查找并替换文本文件中的单词

递归查找并替换文本文件中的单词

我有一个文件夹树,这些文件夹内有许多文本文件。这些文件具有相同的名称“log.txt”和相同的格式。例如,在每个文件中我们可以看到多行,例如:

date
name
. 
.
.

我如何使用命令find在此文件夹树中找到所有文本文件“log.txt”,然后将每个文本文件中的单词“date”替换为单词“dating”?

答案1

假设您当前位于树根中(否则将“.”替换为目录名称)。您可以将“log.txt”替换为“*.txt”或任何您想要的内容。

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

答案2

您可以在目录的根目录中使用find和:sed

find . -type f -name 'log.txt' -exec sed -i 's/^date$/dating/' {} +
  • find . -type f -name 'log.txt'log.txt会递归地找到所有文件

  • -exec在谓词 ,中findsed -i 's/^date$/dating/' {} +date在文件的一行中替换为dating, 。

相关内容