0

我试图弄清楚如何使用 bash 在几个 XML 文件中打印某一行。这些文件位于多个文件夹中。我需要打印的行是一个名为 <name></name>.

我的目标:

  • 搜索文件夹
  • 在一行上打印文件夹位置
  • 在第二行打印文件名
  • 打印介于两者之间的内容

我只需要名称而不是完整路径,我确实需要将它添加到一个名为 .txt 的文件中。我尝试过使用 bash,但我坚持使用这个。

编辑:我也忘了提到这是一个被添加到其他 shell 脚本的片段,所以我不确定我是否可以让 grep 在其中工作。

4

2 回答 2

2

处理时XML,更好的方法是使用真正的工具,如xmllintor xmlstarlet

举例:

find /path -iname '*xml' -exec xmllint --xpath '//name/text()' {} +

这将递归地做到这一点。

于 2012-10-31T04:48:24.307 回答
1

在目录上递归使用 grep 和正则表达式会显示带有标签的文件名(包括路径):

grep -r "<name>.*</name>" /path/to/directory
于 2012-10-30T21:15:10.013 回答