我正在运行测试场景。每次执行场景时,特定目录中都会有两个报告文件;一个是文本文件,另一个是 HTML 文件。我想制作一个索引文件来链接到所有文件。我编写了一个 for 循环来迭代场景文件并执行它们;我还想从 HTML 文件中读取测试场景的最终结果并将其附加到索引文件中。在循环末尾,我附加 <a>
使用 find 命令的链接标签。
for line in $(grep '^scenario ' $scenarioList | cut -d' ' -f2)
do
# Scripts for running tests
find -name '*.txt' -exec sh -c 'f="`basename {}`"; echo "<br><span>Text Report: <a href="./$f" target="_blank">$f</a> -- </span>" >> index.htm' \;
find -name '*.html' -exec sh -c 'f="`basename {}`"; p=`cat $f | grep -Eo "Final Result :.*\." | cut -d"." -f1`; echo "<span>HTML Report: <a href="./$f" target="_blank">$f</a></span> -- <span>$p</span><br>" >> index.htm' \;
# Other scripts
done
它应该在一行中创建指向文本文件的链接、指向 HTML 文件的链接以及每个场景的最终结果,并用 --
分隔。 .
如果我在单个场景中运行此脚本,一切似乎都是正确的:
但是如果我在更多场景中运行它,则会创建错误的链接:
我知道我可以使用-o
逻辑或选项,但我不知道如何将文本文件和 HTML 文件彼此分开以创建链接。任何帮助将不胜感激。
最佳答案
您使用find
的-o
和-printf
选项
find . -name '*.txt' -printf '<br><span>Text Report: <a href="%p" target="_blank">%f</a> -- </span>' -o -name '*.html' -printf '<span>HTML Report: <a href="%p" target="_blank">%f</a></span>'
我可能搞乱了你的格式,但我想你明白了。
%p 选项打印相对于搜索的完整文件路径,%f 打印文件名
关于linux - 在 bash 中使用 find 命令查找多个不同类型的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119951/