批量比较与 htmldiff 共享前缀的文件

批量比较与 htmldiff 共享前缀的文件

我有一堆这样命名的文件:

something08-a-v1.html
something08-b-v2.html
something09-a-v1.html
something09-b-v2.html
somethingelse10-a-v1.html
somethingelse10-b-v2.html

-a-是该文件的先前版本。-b-是较新的版本。所以我每次都有两个文件要比较。

我想将它们与htmldiff

htmldiff -a something08-a-something.html something08-b-something.html -o something08-diff.html

我怎样才能自动化这个?

我认为更明显的方法是使用find,但我很难管理仅选择两个文件并重命名而不使用-[/b]a-v[1/2].

答案1

由于您已经有了文件名模式,您知道一个是,-a-另一个是-b-,并且假设您只有显示的文件对,您可以使用:

$ for file in *-a-*; do 
    prefix=${file%%-*}
    htmldiff -a "$prefix"-a-* -b "$prefix"-b-* -o "$prefix"-diff.html
 done

该语法将从变量值的末尾${var%%pattern}删除最长的匹配项。pattern在这里,模式是-*这样的,它将删除从头到尾的所有内容-,只留下前缀。

请注意,根据GitHub 页面htmldiff,没有-b选项,-a选项是:

-a --accurate-mode 使用准确模式而不是危险模式

所以我怀疑你的命令实际上想要的是:

$ for file in *-a-*; do 
    prefix=${file%%-*}
    htmldiff -a "$prefix"-a-* "$prefix"-b-* -o "$prefix"-diff.html
 done

或者:

$ for file in *-a-*; do 
    prefix=${file%%-*}
    htmldiff "$prefix"-a-* "$prefix"-b-* -o "$prefix"-diff.html
 done

答案2

假设您只有两个文件,文件名上带有每个前缀,这应该可以工作:

htmldiff prefix-*.html -o prefix-diff.html

相关内容