批量替換多檔案字串問題

2022-02-10 02:47:32 字數 1559 閱讀 9130

作業系統 : centos7.3.1611_x64

python 版本 : 2.7.5

編碼過程中有時候會遇到在多個原始檔中存在同乙個變數名(比如 : writebuffer),需要替換為新的變數名(比如 : write_buffer)的問題。 怎麼能方便快捷的解決該問題呢?

sed和grep結合使用可以替換當前資料夾多個檔案的內容。

格式 :

sed -i '

s/原字串/新字串/g

' `grep -rl 原字串 所在目錄`

示例**:

sed -i '

s/writebuffer/write_buffer/g

' `grep -rl writebuffer ./*

`

使用python指令碼可以實現替換當前資料夾多個檔案的內容。

替換單個檔案的**如下:

def

doreplace(fpath,src,dst):

newconent,bflag = ""

,false

with open(fpath,"rb

") as fin:

for line in

fin :

if line.find(src) == -1:

newline =line

else

: bflag =true

newline =line.replace(src,dst)

newconent +=newline

ifnot bflag : return

none

print

fpath

with open(fpath,"wb

") as fout:

fout.write(newconent)

return none

替換多個檔案僅需新增目錄遍歷**。

完整示例**如下:

新增可執行許可權:

chmod a+x replacemulti.py

使用示例:

./replacemulti.py writebuffer write_buffer

將當前資料夾中所有 writebuffer 替換為 write_buffer

也可以將 replacemulti.py 放入 /usr/local/bin/ 目錄:

[root@local ~]# mv replacemulti.py /usr/local/bin/[root@local ~]# replacemulti.py

usage : replacemulti srcstr dststr

replace current

dirfiles

[root@local ~]#

該指令碼在windows下也可以使用,將 replacemulti.py 所在目錄加入環境變數即可。

好,就這些了,希望對你有幫助。

批量替換多檔案字串問題.rst

歡迎補充

linux sed 批量替換字串

一月 21,2014 no comments linux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。命令如下 sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 例如 我要把 charset gb2312 替換為 charset utf 8,執行...

linux sed 批量替換字串

inux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。命令如下 sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 解釋一下 i 表示inplace edit,就地修改檔案 r 表示搜尋子目錄 l 表示輸出匹配的檔名 這個命令組合很強大,要注意備份...

linux sed 批量替換字串

linux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。命令如下 sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 例如 我要把 charset gb2312 替換為 charset utf 8,執行命令 sed i s charset gb23...