1. 程式人生 > >linux下用命令批量修改替換檔案內容

linux下用命令批量修改替換檔案內容

在linux入侵之後,我們要清除留下的一些痕跡,比如apache留下的日誌.但是對於ssh登陸日誌比如/var/log/wtmp 和 lastlog這類二進位制檔案,sed命令就愛莫能助了.

Linux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。

用sed命令可以批量替換多個檔案中的字串。

sed -i "s/原字串/新字串/g" `grep 原字串 -rl 所在目錄`(千萬注意這個符號,是最左上角那個符號不是單引號)

例如:我要把/test下所有包含abc的檔案中的abc替換為def,執行命令:

sed -i "s/abc/def/g" `grep abc -rl /test` 這是目前linux最簡單的批量替換字串命令了!

具體格式如下:

sed -i "s/oldString/newString/g" `grep oldString -rl /path`

例項程式碼:sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl /usr/aa` sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl ./`

方法2: 在日程的開發過程中,可能大家會遇到將某個變數名修改為另一個變數名的情況,如果這個變數是一個區域性變數的話,vi足以勝任,但是如果是某個全域性變數的話,並且在很多檔案中進行了使用,這個時候使用vi就是一個不明智的選擇。

這裡給出一個簡單的shell命令,可以一次性將所有檔案中的指定字串進行修改:

grep "abc" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/abc/abcde/g'

替換字元:sed -i "s/old/new/g" /test

查詢包含指定字元的檔名:grep aaa –ul /test

轉載請務必註明原文:http://www.linuxso.com/a/linuxrumen/600.html