新聞中心
shell :linux sed 批量替換字符串
Linux下批量替換多個(gè)文件中的字符串的簡(jiǎn)單方法。用sed命令可以批量替換多個(gè)文件中的字符串。
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、垣曲ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的垣曲網(wǎng)站制作公司
命令如下:
sed -i "s/原字符串/新字符串/g" grep 原字符串 -rl 所在目錄
例如:我要把www目錄下的所有文件里的 charset=gb2312 替換為 charset=UTF-8,執(zhí)行命令:
sed -i "s/charset=gb2312/charset=UTF-8/g" `grep charset=gb2312 -rl /www`
即可。
解釋一下:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目錄
-l 表示輸出匹配的文件名
這個(gè)命令組合很強(qiáng)大,要注意備份文件。
linux 批量復(fù)制文件
cp dir1/{file1,file2,file3} dir2 ## 可以實(shí)現(xiàn)文件的批量復(fù)制
cp -r dir1/ dir2/ ### 實(shí)現(xiàn)整個(gè)文件夾的復(fù)制,r參數(shù)表示,如果沒(méi)有文件夾dir2/ 則創(chuàng)建一個(gè),如果沒(méi)有r參數(shù)會(huì)報(bào)錯(cuò)。
cp命令并不能直接識(shí)別正則表達(dá)示,如果要復(fù)制的文件很多,會(huì)寫(xiě)命令寫(xiě)到吐血。
可以用ls查看文件夾內(nèi)的所有文件,再傳遞給grep 用正則表示示篩選,篩選后的文件名再傳遞給cp命令
需要注意的是cp 不能直接接收 grep的數(shù)據(jù),需要用到xargs 命令
xargs 是一個(gè)強(qiáng)有力的命令,它能夠捕獲一個(gè)命令的輸出,然后傳遞給另外一個(gè)命令。
-i 或者是-I,這得看linux支持了,將xargs的每項(xiàng)名稱(chēng),一般是一行一行賦值給 {},可以用 {} 代替。
ls |grep 'M. 1. _M. 2. |M. [1-2]. _P. 18. '|xargs -i cp {} /u01/zhh/300Zeamays/300SCMS/
Linux多臺(tái)主機(jī)批量執(zhí)行命令
指定一臺(tái)主機(jī)作為信任主機(jī),這樣從這臺(tái)主機(jī)登錄其他機(jī)器就不需要密碼了。
設(shè)置信任主機(jī):
假設(shè)有四臺(tái)機(jī)器:192.168.2.1~192.168.2.4,其中192.168.2.1為信任機(jī),那么在192.168.2.1上運(yùn)行如下命令:
$.sh-keygen -t rsa //此處一路回車(chē),生成秘鑰
$scp .ssh/id_rsa.pub 192.168.2.2:~/ //把秘鑰拷貝到其他遠(yuǎn)程機(jī)器
$ssh 192.168.2.2 ‘cat id_rsa.pub .ssh/authorized_keys’ //(遠(yuǎn)程執(zhí)行命令)在遠(yuǎn)程機(jī)器上生成認(rèn)證文件
經(jīng)過(guò)這幾步,從192.168.2.1 ssh登陸192.168.2.2時(shí),就不會(huì)再需要輸入密碼了。同樣的步驟再執(zhí)行3、4的極其。
文本文件hostlist可以如下
192.168.2.2
192.168.2.3
192.168.2.4
#!/bin/shdoCommand(){? ??
hosts=`sed -n'/^[^#]/p'hostlist`
for ? host ?in ? $hosts
do
echo ""
echo ?HOST$host
ssh ?$host ?"$@"?
done
return 0
}
if ?[ ?$# -lt 1 ]
then
echo "$0cmd" exit?
fi
do ?Command "$@"
echo "return from doCommand"
執(zhí)行命令(記得先對(duì)doCommand.s
h增加執(zhí)行權(quán)限 chmod u+x doCommand.sh)
./doCommand.sh “l(fā)s -al /root/”
這樣該腳本就會(huì)在每臺(tái)機(jī)器上執(zhí)行”ls -al /root/”這個(gè)命令,并返回結(jié)果在信任主機(jī)上。
分享文章:linux批量命令 linux批量命令執(zhí)行
網(wǎng)頁(yè)路徑:http://fisionsoft.com.cn/article/doidjjj.html