私はXMLファイルを処理していますが、各ファイルの長さは数十行です。文字通り、何百ものファイルがディレクトリ構造に分散されています。はい、マゼントです。
この要素を含むファイルを見つける必要があります<foo><bar><boom><bang>
。タグ<boom><bang>
は他のタグの下で定義できます。フルパスを検索する必要があります。ただ閉じるタグやタグではありません。各タグの間には数十行があり、その間には異なるタグがあります。
<foo>
<hello_world>
... 50 lines ....
</hello_world>
<bar>
<giraffe>
... 50 lines ....
</giraffe>
<boom>
<bang>Vital information here</bang>
</boom>
</bar>
</foo>
定義されたファイルを検索するためのエレガントな* nixメソッドは何ですか<foo><bar><boom><bang>
?私は現在、最新のDebian派生ディストリビューションを使用しています。
説得力から遠い現在の解決策は次のとおりです。
$ grep -rA 100 foo * | grep -A 100 bar | grep -A 100 boom | grep bang | grep -E 'foo|bar|boom|bang'
ベストアンサー1
パスが存在するかどうかをxmlstarlet
試した後、ファイル名を出力できます。sel
i
f
find . -name '*.xml' -exec xmlstarlet sel -t -i '/foo/bar/boom/bang' -f -n {} +