Bash

遞歸查找和替換文本文件中的單詞

  • April 27, 2020

我有一個文件夾樹,在這些文件夾中有許多文本文件。這些文件具有相同的名稱“log.txt”和相同的格式。例如,在每個文件中,我們可以看到多行,例如:

date
name
. 
.
.

如何使用該命令find在此文件夾樹中查找所有文本文件“log.txt”,然後將每個文本文件中的“日期”一詞替換為“約會”一詞?

假設您目前位於樹根中(否則將 ‘.’ 替換為目錄名稱)。您可以將 ’log.txt’ 替換為 ‘*.txt’ 或任何你想要的。

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

您可以從目錄的根目錄使用findand 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, 替換。

引用自:https://unix.stackexchange.com/questions/269279