我需要识别所有空的 xml 文件名并将其写入文本文件以用于报告目的。空 ,这里意味着 xml 文件具有通常的标头标记,<?xml version="1.0" encoding="UTF-8"?>
后跟空的打开和关闭标记。
示例文件:1)
<?xml version="1.0" encoding="UTF-8"?>
<STBTests>
</STBTests>
2)
<?xml version="1.0" encoding="UTF-8"?>
<UMTTests>
</UMTTests>
除此之外,xml 文件中没有任何数据。任何关于如何解决这个问题的建议都会很棒。
答案1
答案2
识别所有空的 xml 文件名并将其写入文本文件以用于报告目的
find
+xmlstarlet
解决方案:
find . -type f -name "*.xml" -exec bash -c \
'v=$(xmlstarlet sel -t -i "count(//*)=1 and //*[1][not(normalize-space())]" -o 1 -b $1);
[[ -n "$v" ]] && echo "$1" >> "empty_xml.txt"' _ {} \;
empty_xml.txt
文件应包含所需文件名/文件路径的列表