我有数百个 .htm 文件,我需要替换 <title>sometext</title>
与实际文件名。
例如:
我有一个名为 records-england.htm
的文件我需要更换 <title>sometext</title>
在这个文件中,文件名像这样 <title>records-england.htm</title>
如果没有扩展名会更好——但这并不重要。 我试过这样但它不工作:
find . -name *.htm | while read file; do sed "s|<title>sometext</title>|<title>$file</title>|g" {} \; done
有什么建议吗?
最佳答案
您可以使用 awk
文件名。需要是 gnu awk
>= 4.1
由于-i inplace
awk -i inplace '{a=FILENAME;sub(/\.htm$/,"",a);gsub(/<title>[^<]*<\/title>/,"<title>"a"</title>")}1' *.htm
这将改变 <title>sometext</title>
(其中 sometext
可以是任何东西)到 <title>filename(without extension)</title>
关于linux - 使用 find 和 sed 将文件名插入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28873502/