如何从终端用更多文件中的另一个字符串替换一个字符串?
How to replace a string with another string in more files, from terminal?
假设有一个名为 "my-folder" 的文件夹,其中包含 100 个文件。如果我们想在所有 100 个文件中替换(不是在文件名中,而是在实际文件中)字符串 "originalString" 和 "replacedString" 应该用什么命令来完成这项工作?
尝试过:
grep -rl matchstring ~/my-folder | xargs sed -i 's/originalString/replacedString/g'
find ~/my-folder -type f -exec sed -i 's/originalString/replacedString/g' {} \;
我也在 Whosebug 上阅读了 this。
None 这些对我有用。我拼错了什么?顺便说一句,我在 linux.
我会用这个:
find my_folder -type f -exec sed 's/old_string/new_string/g' {} +
一旦您确认它正在工作,将 -i
选项传递给 sed 以使其就地编辑原始文件。
这(非常)接近您的第二个解决方案,但是我使用 +
而不是 \;
作为 find 的 exec 选项的结束分隔符。这与 xargs
类似 - 命令行是通过附加每个选定的文件名来构建的。最后,该命令的总调用次数将远远少于匹配文件的数量。
假设有一个名为 "my-folder" 的文件夹,其中包含 100 个文件。如果我们想在所有 100 个文件中替换(不是在文件名中,而是在实际文件中)字符串 "originalString" 和 "replacedString" 应该用什么命令来完成这项工作?
尝试过:
grep -rl matchstring ~/my-folder | xargs sed -i 's/originalString/replacedString/g'
find ~/my-folder -type f -exec sed -i 's/originalString/replacedString/g' {} \;
我也在 Whosebug 上阅读了 this。
None 这些对我有用。我拼错了什么?顺便说一句,我在 linux.
我会用这个:
find my_folder -type f -exec sed 's/old_string/new_string/g' {} +
一旦您确认它正在工作,将 -i
选项传递给 sed 以使其就地编辑原始文件。
这(非常)接近您的第二个解决方案,但是我使用 +
而不是 \;
作为 find 的 exec 选项的结束分隔符。这与 xargs
类似 - 命令行是通过附加每个选定的文件名来构建的。最后,该命令的总调用次数将远远少于匹配文件的数量。