1

2 つのディレクトリを比較し、相違点の何らかの構造化出力 (テキスト ファイルで問題ありません) を生成する必要があります。つまり、出力は次のようになります。

file1 exists only in directory2
file2 exists only in directory1
file3 is different between directory1 and directory2

情報がある限り、形式は気にしません。2 番目の要件は、2 つのファイルを比較するときに、特定の文字列を無視できる必要があることです。Araxis Merge にはこの機能があります。正規表現と、その正規表現に一致する文字シーケンスのみが異なる任意のファイルを入力すると、それらのファイルは同一であると報告されます。

Araxis Merge は良い候補になりますが、まだ構造化された diff の出力を生成する方法を見つけていません。コマンドライン引数を指定して consolecompare.exe を起動しても、違いを示す Araxis GUI ウィンドウが開くだけです。

それで、次のいずれかが存在しますか?

  • Araxis Merge で差分結果をテキスト ファイルに出力する方法はありますか?
  • 特定の文字シーケンスを無視して diff を実行し、構造化された出力を生成する別のユーティリティ?

そのようなユーティリティが Python のモジュールまたはプラグインとして存在する場合は、追加のクレジット。これは完全にコマンド ライン/Python スクリプトから実行する必要があることに注意してください。GUI は使用しません。

4

1 に答える 1

1

ある程度、単純な古いdiffコマンドはまさにそれを行うことができます。つまり、ディレクトリの内容を比較し、特定の正規表現パターンに一致する変更を無視します(-Iオプションを使用)。

マンバッシュから:

-I regexp
      Ignore changes that just insert or delete lines that match  regexp.

クイックデモ:

[me@home]$ diff images/ images2
Only in images2: x
Only in images/: y
diff images/z images2/z
1c1
< zzz
---
> zzzyy2

[me@home]$ # a less verbose version
[me@home]$ diff -q images/ images2
Only in images2: x
Only in images/: y
Files images/z and images2/z differ

[me@home]$ # ignore diffs on lines that contain "zzz"
[me@home]$ diff -q -I ".*zzz.*" images/ images2/
Only in images2/: x
Only in images/: y
于 2011-09-22T16:32:53.317 に答える