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-最新バージョンです。だから、毎回比較するファイルが2つあります。

私はそれらを結合したいhtmldiff

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

これをどのように自動化できますか?

を使用する方がより確実な方法だと思いますfind-[/b]a-v[1/2]

答え1

ファイル名パターンが既に存在しているため、1つはで、-a-もう1つはということがわかり、-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

ファイル名に各プレフィックスがある2つのファイルしかないと仮定すると、次のように動作します。

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

関連情報