GNU/Linux >> Linux の 問題 >  >> Linux

Unix/Linux で 2 つのファイルの内容が同じかどうかを確認する最速の方法は?

@Alex Howanskyがこれに「cmp --silent」を使用したのが好きです。しかし、肯定と否定の両方の応答が必要なので、次を使用します:

cmp --silent file1 file2 && echo '### SUCCESS: Files Are Identical! ###' || echo '### WARNING: Files Are Different! ###'

これをターミナルまたは ssh で実行して、定数ファイルと照合してファイルをチェックできます。


すばやく安全に 任意の 2 つのファイルを比較:

if cmp --silent -- "$FILE1" "$FILE2"; then
  echo "files contents are identical"
else
  echo "files differ"
fi

読みやすく、効率的で、"` $() を含むすべてのファイル名で機能します。


cmpを信じる 最初のバイトの違いで停止します:

cmp --silent $old $new || echo "files are different"

私は評判が悪く、十分な評判ポイントがないため、この情報をコメントとして追加することはできません.

ただし、cmp を使用する場合は、 コマンドを実行する必要はありません (詳細にする必要はありません)。終了ステータスを取得するだけです。 cmp あたり マニュアルページ:

<ブロック引用>

FILE が「-」または欠落している場合は、標準入力を読み取ります。終了ステータスは、入力が同じ場合は 0、異なる場合は 1、問題が発生した場合は 2 です。

したがって、次のようなことができます:

STATUS="$(cmp --silent $FILE1 $FILE2; echo $?)"  # "$?" gives exit status for each comparison

if [[ $STATUS -ne 0 ]]; then  # if status isn't equal to 0, then execute code
    DO A COMMAND ON $FILE1
else
    DO SOMETHING ELSE
fi

編集:コメントありがとうございます!ここでテスト構文を更新しました。ただし、読みやすさ、スタイル、および構文の点でこの回答に似たものを探している場合は、Vasili の回答を使用することをお勧めします。


Linux
  1. Linuxターミナルでファイルをコピーする

  2. Linuxターミナルでファイルを移動する

  3. LinuxとUnix:違いは何ですか?

  1. Linuxコマンドラインで牛を飼う

  2. Linuxで元に戻すことはできますか?

  3. LinuxおよびUnixでのLost+foundフォルダーの目的は?

  1. Linux – Unix / linuxファイルのディレクトリ構造情報をどのように検査しますか?

  2. Isoを抽出する最速の方法は?

  3. Linux – Unix / linux Osesの標準および/または共通ディレクトリ?