簡體   English   中英

搜索 HTM 文件並在第一行添加

[英]Search on HTM Files and add at first line

我找不到搜索哪些 HTM* 文件沒有 DOCTYPE 並將此 DOCTYPE 添加到此特定文件的好方法

我得到了這樣的文件列表:

for i in ` find . -name "*.htm*" -print`; do grep -L "DOCTYPE" $i;done;

但是我找不到如何使用 sed 處理這個列表

我試過 :

for i in ` find . -name "*.htm*" -print; grep -L "DOCTYPE"`; do sed -i '1i <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">' $i; done;

但它在所有 HTM* 文件上添加了這一行

謝謝

您應該使用-exec選項來執行此操作find ,而不是編寫自己的循環:

find . -name '*.htm?' -exec sed -i .bak '1 { /DOCTYPE/ ! i\
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
}' {} +

這將查找以.htm結尾的所有文件,后跟一個可選的額外字符並執行 sed 命令。 如果/DOCTYPE/在第一行不匹配,則插入字符串。

-exec{} +意味着使用最少數量的 sed 實例,而不是為每個找到的文件運行單獨的實例。

我在-i之后添加了一個參數,以便創建后綴為.bak備份文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM