如何搜索xml文件,条件是文件名在文件中
第一项任务
所以首先用xml类型搜索文件:
find /tmp -name '*.xml'
/tmp/Prepare_file_Env.xml
第二项任务
第二部分是查找文件名 - Prepare_file_Env字在文件内 - Prepare_file_Env.xml ,
所以我做了这个
示例:
grep -cq Prepare_file_Env Prepare_file_Env.xml ; [[ $? -eq 0 ]] && echo $FileName
我的问题 - 如何在一个查找语法中结合两个任务
请求查找的语法......或任何其他解决方案......
find /tmp -name '*.xml' -exec ............
xml文件的示例 - Prepare_file_Env.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Component configuration file -->
<Component>
<Name>Prepare_file_Env</Name>
查找CLI的预期结果,基于XML文件示例
/tmp/Prepare_file_Env.xml
答案 0 :(得分:1)
$ find . -type f -name '*.xml' -exec grep -o -P '(?<=<Name>).*(?=</Name>)' {} \;
Prepare_file_Env
总结:
grep -o -P
使用特殊Perl
类型的正则表达式匹配,并获取<Name>
</Name>
找到的xml
文件之间的单词find
答案 1 :(得分:0)
$ find /tmp -name '*\.xml' -print0 | \
xargs -0 sh -c 'grep -l `sed "s:^.*/::;s:.xml *$::"<<<"$@"` "$@"' echo
/tmp/Prepare_file_Env.xml
sed "s:^.*/::;s:.xml *$::"<<<"$@"
:获取没有.xml
grep -l
:如果找到字符串,则打印文件名