Linux
我可以用一個命令替換兩個不同文件中的字元串嗎?
我有一個包含一些子目錄的目錄。我知道有兩種類型的文件,例如
*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' {} \;
要完全清楚,這僅在使用單個字母作為匹配時才有效。