我需要在目录中的所有文件和子目录中递归搜索指定的字符串,并将此字符串替换为另一个字符串。
我知道查找它的命令可能如下所示:
grep 'string_to_find' -r ./*
但是,如何将string_to_find
的每个实例替换为另一个字符串呢?
另一种选择是使用 find,然后将其传递到 sed。
find /path/to/files -type f -exec sed -i 's/oldstring/new string/g' {} \;
我得到了答案。
grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g'
你甚至可以这样做:
例
grep -rl 'windows' ./ | xargs sed -i 's/windows/linux/g'
这将在所有文件中相对于当前目录搜索字符串“windows”,并将每个文件中出现的字符串替换为“linux”。