標籤:http os 使用 ar strong 檔案 div sp 問題
程式開發中,可能你會經常遇到批量替換檔案內容的情況,如果你使用的是linux,那麼恭喜你,你可以使用一下三種辦法進行尋找替換。
方法一: find -name ‘file.log‘ | xargs perl -pi -e ‘s|string1|string2|g‘ 這裡使用了perl語言,使用-e加上一段代碼,從而批量地將目前的目錄及所有子目錄下的file.log檔案中的string1替換成了string2 string支援Regex 方法二: sed -i "s/string1/string2/g" ‘grep string1 -rl /path‘ 這裡使用了sed命令,將/path目錄及其子目錄下的所有檔案中的string1替換成了string2 這個命令,可能對返回多個檔案不太支援,不太推薦! 方法三: grep -i "string1" -r /path | awk -F : ‘{print $1}‘ | sort | uniq | xargs sed -i ‘s/string1/string2/g‘ 這裡使用了
shell命令,先尋找出檔案,再用awk分割(以:切分),再行替換! 注意: grep可以使用正則,也可以使用\轉義一些特殊字元,比如“等 sed -i ‘s/\"localhost\"/\"10.2.2.2\"/g‘ /home/my.conf-------------------------------------以上是原帖,地址:http://www.51testing.com/html/93/316693-815340.html------------------------------------------------------- 上司發現了一個sql注入的漏洞,讓我批次更新所有同名檔案的這個地方,where("id=‘".$rec."‘")改成where(array("編號"=>$rec))因為我也是剛入門linux,所以馬上百度方法,首先使用了sed -i "s/string1/string2/g" ‘grep string1 -rl /path‘ sed -i "s/where(\"id=‘\".\$rec.\"‘\")/where(array(\"id\"=>\$rec))/g" `grep -rl /home` 測試,執行,成功,心裡樂呵呵的在正式伺服器裡執行了,當時快下班了,就關了螢幕撤退了。第二天早上開啟螢幕一看,我擦,還沒執行完,一想確實,那麼多檔案螢幕顯示也費勁了,然後又百度,因為都是同名的檔案,所以這次用了 find -name ‘file.log‘ | xargs perl -pi -e ‘s|string1|string2|g‘這個方法,中間因為轉義費了好久的事, find /home/ -name ‘xxxx.php‘ | xargs perl -pi -e "s|where\(\"id=‘\".\$rec.\"‘\"\)|where\(array(\"id\"=>\$rec\)\)|g" -> 錯誤一開始寫的是 \$rec 然後就是不成功,沒辦法只有百度轉義,發現很多博文都有些為了轉義\使用5678個\來轉義他自己,恍然大悟,原來\$轉義出來的還是$rec還是個變數, find /home/ -name ‘xxxx.php‘ | xargs perl -pi -e "s|where\(\"id=‘\".\\\$rec.\"‘\"\)|where\(array(\"id\"=>\\\$rec\)\)|g" -> 正確因為從雙引號裡先轉義了\\\$,從雙引號裡出來時就已經是\$了,然後命令執行時再轉義成了$rec,這下終於好了,測試成功,執行了半分鐘,全部替換完畢,
【轉】linux批次更新檔案內容+【原創】轉義時的問題