2012-09-05 80 views
1

可能重複:
Find and Replace Inside a Text File from a Bash Command找到並在多個文件中替換文本

有人告訴我,改變所有的標題標籤中的一個網站。

因爲標題標籤是在網站(超過30)的所有頁面,它是靜態的,我需要的文件,以便用新的來代替這個頭銜去文件。

所以我在想,如果有人知道一個腳本,可以做到這一點,而不必由一個基礎手工做的一個。

例子:

/var/www/websitename/ 

這裏面的路徑,還有就是我有標題從更改多個.html文件:

<title>Old title</title> 

要:

<title>New title</title> 
+0

難道'sed'解決問題了嗎? – Shahbaz

回答

3

試試這個(在文件夾備份後,因爲這裏sed就地工作)。

find /var/www/websitename/ -name '*.html' -exec sed -i.bak 's/.title.Old title..title./<title>New title<\/title>/g' {} \; 
2
perl -pi -e 's/\<title\>Old title\<\/title\>/\<title\>New title\<\/title\>/g' *.html 
+0

該解決方案也起作用。 – rfc1484

0

您也可以使用記事本++。打開所有文件(只是將它們標記和記事本+拖動或拖動整個文件夾),按Ctrl + F,切換到第二個選項卡(「替換」或這樣的事情 - 我不使用英文版本),鍵入文本(你也可以使用regexp - 查看選項)並點擊「替換所有打開的文件」(或者像這樣)。它不像使用腳本一樣強大,但它更容易,而且通常足夠。

0

試試這個:

#!/bin/bash 

old_title="<title>Old title<\/title>" 
new_title="<title>New title<\/title>" 

for file in $(find . -name "*.html"); 
do 
    `sed -i "s/${old_title}/${new_title}/g" ${file}` 
done