如何在任何types的文件(例如二进制和…)和多个文件在Linux中的文本string?

我想在Linux中的多个文件夹中的任何types的文件(例如perl,cgi,文本,二进制文件,js和…)中replace文本string。

我该怎么做?

坦克。

编辑二进制文件的问题在于,它们通常以特定格式布置,特定字节的位置具有重要意义。 所以试图自动化这可能是非常困难的,应该可以使用理解文件格式的工具来完成。

下面的Bash脚本可以用来编辑文本文件:

#!/bin/bash while read -r file do { tempfile=$(tempfile) || tempfile=$(mktemp) || { tempfile="/tmp/tmpfile.$$" && touch "$tempfile"; } && sed 's/original text/new text/g' "$file" > "$tempfile" && mv "$tempfile" "$file" } || echo "Edit failed for $file" done < <(find . -type f) 

或将第二行和最后一行更改为:

 find . -type f | while 

 done 

如果您的sed版本可以进行就地编辑,那么您可以消除创build临时文件(上面的dodone之间的所有内容),并在循环中使用此sed命令:

 sed -i 's/original text/new text/g' "$file"