Vic*_*Dev 5 command-line xml find
Ubuntu 14.04 值得信赖的塔尔。
假设我有一个名为“testmag”的目录,它可能包含数百个 xml 文件,而目录又包含许多 xml 文件。我不知道任何 xml 文件的名称,但我知道其中之一包含 tag <dbname>....</dbname>。
现在如何找到包含上述标签的文件并将标签的值作为终端中的输出
这是一个解决方案,find它还将输出包含匹配项的文件的文件名:
find . -name "*.xml" -exec grep '<dbname>' {} \; \
-exec echo -e {}"\n" \; \
| sed 's/<dbname>\(.*\)<\/dbname>/\1/g'
Run Code Online (Sandbox Code Playgroud)
解释
find . -name "*.xml"从当前目录递归查找所有 xml 文件-exec grep '<dbname>' {} \;在每个文件上搜索模式<dbname>-exec echo -e {}"\n" \;echo 文件名 + 新行(-e选项使 echo 解释\n)| sed 's/<dbname>\(.*\)<\/dbname>/\1/g'通过管道输出来sed仅打印<dbname></dbname>标签之间包含的字段。注意1:您可以格式化输出,echo -e ...以便清楚地列出每个文件的结果,例如通过添加新行或下划线行,无论什么都适合您的需要。
.注意2:每个文件的路径将相对于(例如)给出./subfolder1/file.xml。如果您想要绝对路径,请选择find $PWD -name ....