我有一个文件夹树,这些文件夹内有许多文本文件。这些文件具有相同的名称“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
在谓词 ,中find
,sed -i 's/^date$/dating/' {} +
将date
在文件的一行中替换为dating
, 。