我想在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临时文件(上面的do
和done
之间的所有内容),并在循环中使用此sed
命令:
sed -i 's/original text/new text/g' "$file"