關(guān)于Linux下批量替換文件內(nèi)容方法有哪些
對于單個文件,使用sed命令很容易做到。如果需要替換某個指定文件夾下所有文件,借助grep和sed組合成一條命令也可以輕松搞定。那么如何操作呢?學(xué)習(xí)啦小編就給大家講解一下具體方法。
grep命令可以查找單個文件或文件夾下文件中的內(nèi)容,使用參數(shù)“r”或“-R”可以遞歸查找指定文件夾下的所有文件;參數(shù)“l”可以讓grep輸出包含指定字符串的文件名,首次匹配成功后立刻停止對同文件的查詢。如果不使用“l“,grep查詢單個文件時輸出文件中所有包含指定字符串的行,對文件夾查詢時則按照“文件名:包含字符串行”的方式輸出。
將下面的內(nèi)容替換掉。
http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js
http://libs.baidu.com/jquery/1.9.0/jquery.js
代碼如下:
sed -i "s/ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js/libs.baidu.com/jquery/1.9.0/jquery.js/g" 1.htm
sed -i "s/ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js/libs.baidu.com/jquery/1.9.0/jquery.js/g" `ls`
你可能對linux之sed用法 感興趣。
有了上面提到的知識,執(zhí)行批量替換的命令可以寫為:
grep "netingcn" -rl /assign-path | xargs sed -i 's/netingcn/www.netingcn/g'
或
sed -i 's/netingcn/www.netingcn/g' `grep "netingcn" -rl /assign-path`
還有一種比較復(fù)雜的寫法:
grep "netingcn" * -R | awk -F: '{print class="main">
關(guān)于Linux下批量替換文件內(nèi)容方法有哪些
其中命令awk用于分割字符串、uniq對結(jié)果進(jìn)行除重。
1、網(wǎng)絡(luò)上現(xiàn)成的資料
格式: sed -i "s/查找字段/替換字段/g" `grep 查找字段 -rl 路徑`
linux sed 批量替換多個文件中的字符串
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
例如:替換/home下所有文件中的www.admin99.net為admin99.net
sed -i "s/www.admin99.net/admin99.net/g" `grep www.admin99.net -rl /home`
exp:sed -i "s/shabi/$/g" `grep shabi -rl ./`
2、自己額外附加
2.1 將文件1.txt內(nèi)的文字“garden”替換成“mirGarden”
# sed -i "s/garden/mirGarden/g" 1.txt //sed -i 很簡單
2.2 將當(dāng)前目錄下的所有文件內(nèi)的“garden”替換成“mirGarden”
## sed -i "s/garden/mirGarden/g" `ls` //其實(shí)也就是ls出多個文件名而已
如果大家還不清楚,那么學(xué)習(xí)啦小編就再給大家推薦另一個方法給大家:
1:查找
find . -type f -name "*.html"|xargs grep ‘yourstring’
2:查找并替換
find -name '要查找的文件名' | xargs perl -pi -e 's|被替換的字符串|替換后的字符串|g'
perl -pi -e
在Perl 命令中加上-e 選項(xiàng),后跟一行代碼,那它就會像運(yùn)行一個普通的Perl 腳本那樣運(yùn)行該代碼.
從命令行中使用Perl 能夠幫助實(shí)現(xiàn)一些強(qiáng)大的、實(shí)時的轉(zhuǎn)換。認(rèn)真研究正則表達(dá)式,并正確地使用,將會為您省去大量的手工編輯工作。
3:批量修改文件夾權(quán)限
find . -type -d -name *.html|xargs chmod 755
4:批量修改文件權(quán)限
find . -type -f -name *.html|xargs chmod 644
查找和替換是很常用的操作。
這里介紹的小小技巧可以使你很輕松地完成大量重復(fù)、繁瑣的工作。
以例子進(jìn)行說明
在當(dāng)前目錄下的.c文件中查找字符串"password"
grep "password" *.c
在當(dāng)前目錄及其多個子目錄中查找文件test.c
find . -name "test.c" -print
在當(dāng)前目錄及其多個子目錄中查找.vbs文件并刪除之
find . -name "*.vbs" -exec rm {} \;
在當(dāng)前目錄及其多個子目錄下的.c文件中查找字符串"password"
find . -name "*.c" -print | xargs grep "password"
在當(dāng)前目錄下的.c文件中把字符串"password"替換成"pwd"
perl -pi -e 's/password/pwd/g' *.c
在當(dāng)前目錄下的.c文件中把字符串"password"替換成"pwd"并以.bak擴(kuò)展名備份
perl -pi.bak -e 's/password/pwd/g' *.c
在當(dāng)前目錄及子目錄下的.c文件中替換字符串"password"為"pwd"
find . -name "*.c" -print | xargs perl -pi -e 's/password/pwd/g'
使用sed操作批量替換
格式: sed -i "s/查找字段/替換字段/g" `grep 查找字段 -rl 路徑`
linux sed 批量替換多個文件中的字符串
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
例如:替換/home下所有文件中的www.viiving.com為www.zjant.com
sed -i "s/www.viiving.com/www.zjant.com/g" `grep www.viiving.com -rl /mysites
在當(dāng)前目錄下操作:sed -i "s/www.viiving.com/www.zjant.com/g" *
關(guān)于Linux下批量替換文件內(nèi)容方法有哪些
精選文章
-
關(guān)于Linux系統(tǒng)中出現(xiàn)中文亂碼的解決方法
有時候在使用CentOS 系統(tǒng)時,安裝的時候可能你會遇到英文的CentOS系統(tǒng),在這中情況下安裝CentOS系統(tǒng)時是默認(rèn)安裝(即英文)。安裝完畢后,出現(xiàn)的各種中文亂
-
關(guān)于常用的Linux命令有哪些
對于一些使用Linux系統(tǒng)的用戶來說,一些常用的Linux命令估計(jì)還不很了解。不過沒關(guān)系,學(xué)習(xí)啦小編通過上網(wǎng)查閱已經(jīng)整理了一套比較常用的Linux命令。希望
-
關(guān)于Linux操作系統(tǒng)下設(shè)置基本網(wǎng)絡(luò)參數(shù)四種方法
好多剛使用linux系統(tǒng)的用戶還不清楚如何設(shè)置基本的網(wǎng)絡(luò)參數(shù)!!!所以學(xué)習(xí)啦小編今天就給大家講講Linux操作系統(tǒng)下設(shè)置基本網(wǎng)絡(luò)參數(shù)四種方法到底有哪些!!
-
關(guān)于Linux系統(tǒng)安全配置詳細(xì)步驟過程是什么
今天學(xué)習(xí)啦小編就要為大家上一堂關(guān)于Linux系統(tǒng)安全配置的課,希望對此感興趣或者要學(xué)這些命令的童鞋可以跟著小編往下看。 學(xué)習(xí)啦小編強(qiáng)力推薦的Lin