Linux

我可以用一個命令替換兩個不同文件中的字元串嗎?

  • December 11, 2019

我有一個包含一些子目錄的目錄。我知道有兩種類型的文件,例如*A*.txt和,在該目錄下*B*.txt包含一個“ **oldString ”。**我想用“ newString ”替換它們。我可以在一個命令中執行此操作嗎?那就是我可以"*B*.txt"在這個命令中添加某處:

find . -type f -name "*A*.txt" -exec sed -i 's/oldString/newString/g' {} \;

你可以試試:

find . -type f \( -name "*A*.txt" -o -name "*B*.txt" \) \
 -exec sed -i 's/oldString/newString/g' {} +

(這裡也使用+代替;來避免每個文件執行一次呼叫;如果任何呼叫以非零退出狀態返回,sed則還具有返回非零退出狀態的好處)。sed

如果它真的只是一個字母,你可以這樣做:

find . -type f -name "*[AB]*.txt" -exec sed -i 's/oldString/newString/g' {} \;

要完全清楚,這僅在使用單個字母作為匹配時才有效。

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