linux - 在 bash 中使用 find 命令查找多个不同类型的文件

标签 linux bash find

我正在运行测试场景。每次执行场景时,特定目录中都会有两个报告文件;一个是文本文件,另一个是 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 文件的链接以及每个场景的最终结果,并用 -- 分隔。 .

如果我在单个场景中运行此脚本,一切似乎都是正确的:

enter image description here

但是如果我在更多场景中运行它,则会创建错误的链接:

enter image description here

我知道我可以使用-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/

相关文章:

linux - 在 linux 终端中查找并删除文件名中包含相同字符串的文件

javascript - 查找不工作的回调-Javascript

linux - 设置 stty 参数

ruby - -bash :/usr/local/bin/heroku:/usr/local/bin/ruby: bad interpreter: No such file or directory

java - Shell 行为 : Two (identical? ) 实例的行为与 java 不同

ruby-on-rails - 在哪里修补Rails ActiveRecord::find()以便首先检查内存中的集合?

c - 使用不同方法的 Linux 功能的性能分析

android - 如何使用中国品牌平板电脑在 Linux 上启用 USB 调试?

c++ - windows类型到linux

c++ - EOF 进入无限循环