vim がインストールされている場合は、これを試してください:
vimdiff file1 file2
または
vim -d file1 file2
あなたはそれが素晴らしいと思うでしょう。
sdiff
を試す (man sdiff
)
sdiff -s file1 file2
git diff
からの diff 出力スタイルを好む場合 、 --no-index
で使用できます git リポジトリにないファイルを比較するためのフラグ:
git diff --no-index a.txt b.txt
それぞれ約 20 万個のファイル名文字列を含むいくつかのファイルを使用して、ベンチマークを行いました (組み込みの time
コマンド)このアプローチと他の回答のいくつかをここで比較してください:
git diff --no-index a.txt b.txt
# ~1.2s
comm -23 <(sort a.txt) <(sort b.txt)
# ~0.2s
diff a.txt b.txt
# ~2.6s
sdiff a.txt b.txt
# ~2.7s
vimdiff a.txt b.txt
# ~3.2s
comm
git diff --no-index
ながら、群を抜いて最速のようです diff スタイルの出力の最速のアプローチのようです。
2018 年 3 月 25 日更新 実際には --no-index
を省略できます Git リポジトリ内にいて、そのリポジトリ内の追跡されていないファイルを比較したい場合を除き、フラグを立てます。マニュアルページから:
このフォームは、ファイルシステム上の指定された 2 つのパスを比較するためのものです。 Git によって制御される作業ツリーでコマンドを実行し、パスの少なくとも 1 つが作業ツリーの外を指している場合、または Git によって制御される作業ツリーの外でコマンドを実行する場合は、 --no-index オプションを省略できます。
それらを並べ替えて comm
を使用します :
comm -23 <(sort a.txt) <(sort b.txt)
comm
は入力ファイルを比較 (ソート) し、デフォルトで 3 つの列を出力します:a に固有の行、b に固有の行、および両方に存在する行です。 -1
を指定することで 、 -2
および/または -3
対応する出力を抑制することができます。したがって、comm -23 a b
a に固有のエントリのみをリストします。 <(...)
を使用しています オンザフライでファイルをソートするための構文。ファイルが既にソートされている場合、これは必要ありません。