将目录和所有子目录中所有Xml文件的Xml属性值替换为文件名

时间:2018-11-29 16:32:40

标签: xml sed grep find

给大家一个问题sed |找到xmllint | xargs专家在那里:

我需要一个脚本来替换Xml属性的值someXmlTag 包含当前目录(和子目录)中的所有* .xml文件 文件名(不带扩展名)

任务分配: 我需要一个脚本来将目录中所有* .xml文件的Xml-Tag值替换为文件名的第一部分(在定界符之前),将Xml-Tag替换为文件名的第二部分(在定界符之后)(和子目录)

在此先感谢您的帮助!

致谢

塞巴斯蒂安

1 个答案:

答案 0 :(得分:0)

您尚未提供任何示例,测试用例。 无论如何,此find / xargs / sed会在当前目录中找到所有后缀为.xml的文件,并将<xmlTag></xmlTag>内的内容替换为<newTag></newTag>

find ./ -type f -name "*.xml" -print0 | xargs -0 sed -i 's/\(<\/\{,1\}\)xmlTag/\1newTag/g'

测试:

$ cat file.xml
<xmlTag>
</xmlTag>
<xmlTag>Whats up</xmlTag>

$ sed 's/\(<\/\{,1\}\)xmlTag/\1newTag/g' file.xml
<newTag>
</newTag>
<newTag>Whats up</newTag>