ファイルを比較できます。
diff [OPTION]... FILES
FILESに2つのディレクトリを指定すれば、ディレクトリ内のすべてのファイルを、一括して比較できます。
長い形式のオプションで必須の引数は、それに対応する短い形式のオプションでも同様に必須です。 --normal 通常の diff を出力する (デフォルト) -q, --brief ファイルが異なるかどうかのみ表示する -s, --report-identical-files 両方のファイルが同一であるかどうかのみ表示する -c, -C NUM, --context[=NUM] コンテキスト diff 形式で前後 NUM (デフォルト: 3) 行を表示する -u, -U NUM, --unified[=NUM] ユニファイド diff 形式で前後 NUM (デフォルト: 3) 行を表示する -e, --ed ed スクリプトを出力する -n, --rcs RCS 形式の diff を出力する -y, --side-by-side 出力を2列にする -W, --width=NUM 表示する列を最大 NUM (デフォルト: 130) 列にする --left-column 共通行は左側の列のみ表示する --suppress-common-lines 共通行の出力を抑止する -p, --show-c-function 変更がある C 関数を表示する -F, --show-function-line=RE RE に一致する最も近い行を表示する --label LABEL ファイル名の代わりに LABEL を使用する (繰り返し指定できます) -t, --expand-tabs 出力時にタブをスペースに展開する -T, --initial-tab タブで始まる行は、前にタブを置いてそろえる --tabsize=NUM タブ幅を NUM (デフォルト: 8) 列に設定する --suppress-blank-empty 空の出力行の前後ではスペースまたはタブを抑止する -l, --paginate pass output through 'pr' to paginate it -r, --recursive サブディレクトリーを再帰的に比較する --no-dereference don't follow symbolic links -N, --new-file 存在しないファイルを空ファイルとして扱う --unidirectional-new-file 存在しない最初のファイルを空ファイルとして扱う --ignore-file-name-case ファイル名の大文字と小文字を区別しない --no-ignore-file-name-case ファイル名の大文字と小文字を区別する -x, --exclude=PAT PAT に一致するファイルを除外する -X, --exclude-from=FILE FILE 内のパターンに一致するファイルを除外する -S, --starting-file=FILE ディレクトリーを比較する時に FILE から始める --from-file=FILE1 すべての被演算子と FILE1 を比較する FILE1 はディレクトリーでもよい --to-file=FILE2 すべての被演算子を FILE2 を比較する FILE2 はディレクトリーでもよい -i, --ignore-case ファイル内容の比較時に大文字と小文字を区別しない -E, --ignore-tab-expansion タブ展開によって発生する違いを無視する -Z, --ignore-trailing-space 行末にあるスペースを無視する -b, --ignore-space-change スペース数により生じる違いを無視する -w, --ignore-all-space すべてのスペースを無視する -B, --ignore-blank-lines ignore changes where lines are all blank -I, --ignore-matching-lines=RE ignore changes where all lines match RE -a, --text すべてのファイルをテキストとして扱う --strip-trailing-cr 入力から CR (キャリッジリターン) を除去する --binary バイナリーモードでデータを読み書きする -D, --ifdef=NAME output merged file with '#ifdef NAME' diffs --GTYPE-group-format=GFMT GTYPE の入力グループを GFMT で整形する --line-format=LFMT すべての入力行を LFMT で整形する --LTYPE-line-format=LFMT LTYPE 入力行を LFMT で整形する これらの書式整形オプションは -D/--ifdef に適用される diff の出力をきれいに 見えるように制御するために提供されます。 LTYPE is 'old', 'new', or 'unchanged'. GTYPE is LTYPE or 'changed'. GFMT でのみ指定できる書式: %< FILE1 からの行 %> FILE2 からの行 %= FILE1 と FILE2 で共通の行 %[-][WIDTH][.[PREC]]{doxX}LETTER printf 書式の LETTER LETTER は次の通りです。ただし古いグループでは小文字です: F 最初の行番号 L 最後の行番号 N 行数 = L-F+1 E F-1 M L+1 %(A=B?T:E) A と B が等しい場合は T、等しくない場合は E LFMT でのみ指定できる書式: %L 行の内容 %l 行末にあるすべての種類の改行文字を除いた行の内容 %[-][WIDTH][.[PREC]]{doxX}n printf 書式の入力行 GFMT と LFMT の両方で指摘できる書式: %% % %c'C' 単一文字 C %c'\OOO' 八進数コード OOO C 文字 C (他の文字も同様に表す) -d, --minimal 差分の大きさが最小となるように違いを検出する --horizon-lines=NUM 差分の前後にある共通部分を NUM 行保持する --speed-large-files 巨大なファイルに小さな差分が分散していると仮定する --help このヘルプを表示して終了する -v, --version バージョン情報を表示して終了する FILES are 'FILE1 FILE2' or 'DIR1 DIR2' or 'DIR FILE...' or 'FILE... DIR'. --from-file または --to-file が与えられた場合、FILE に制限はありません。 If a FILE is '-', read standard input. 終了コードは、入力ファイルが同じ場合は 0、入力ファイルが異なる場合は 1、問題が発生したときは 2 になります。
$ cat sampleA 1 3 4 5 $ cat sampleB 1 2 3 4 $ diff sampleA sampleB 1a2 > 2 4d4 < 5
-cオプションを指定すると、コンテキスト形式 (Context format) で出力されます。
$ diff -c sampleA sampleB *** sampleA 2014-01-30 01:00:00.000000000 +0900 ファイル1の情報 --- sampleB 2014-01-30 01:00:01.000000000 +0900 ファイル2の情報 *************** *** 1,4 **** 変更箇所は、ファイル1の1行目から4行分。ファイル2もそれに同じ。 1 3 4 - 5 ファイル1にのみ存在 --- 1,4 ---- 1 + 2 ファイル2にのみ存在 3 4
-uオプションを指定すると、ユニファイド形式 (Unified format) となります。
$ diff -u sampleA sampleB --- sampleA 2014-01-30 01:00:00.000000000 +0900 ファイル1の情報 +++ sampleB 2014-01-30 01:00:01.000000000 +0900 ファイル2の情報 @@ -1,4 +1,4 @@ 変更箇所は、ファイル1の1行目から4行分。ファイル2も1行目から4行分 1 +2 ファイル2にのみ存在 3 4 -5 ファイル1にのみ存在