2つのファイルの比較

2つのファイルの比較

2つのファイルの内容を比較し、内容が異なる場合は異なるスクリプトを実行するスクリプトを使用する必要がありますが、内容が同じであれば何もしません。 DIFFコマンドを使ってみましたが、うまく動作しないようです。誰でもこれを行う簡単な方法を提供できますか?

答え1

diffまたはを使用できますcmp。直接比較のために、以下を好みますcmp

cmp -s "$file1" "$file2" || otherscript.sh

答え2

diff file1 file2あなたが要求することを正確に行います。 (たとえあなたが実際に説明するよりも進化したことを達成しようとしていると思いますが)。diffファイルが等しい場合は 0 終了状態が返され、異なる場合は 0 以外の終了状態が返されます。これをスクリプトで使用している場合は、違いが印刷されないように出力をリダイレクトできます。

if ! diff "$file1" "$file2" > /dev/null; then
    # test evaluated to False (1), so the files are different
    bash otherscript.sh
fi

答え3

代わりにハッシュを使用してください。

HASH_VALUE_1=$(sha1sum file1 | cut -c 1-40)
HASH_VALUE_2=$(sha1sum file2 | cut -c 1-40)
if [[ "$HASH_VALUE_1" == "$HASH_VALUE_2" ]]
then
    # your code
else
    # your code
fi

上記はbash用に書かれています。

答え4

テキストファイルを比較したい場合、並列オプションは違いを表示するのに役立ちます。使用

diff -y -a <filea> <fileb> 

次に(-yはASCIIファイルを意味します)。

ファイル(バイナリ)のバイトが異なるかどうかを知りたい場合は、次を使用してください。

diff -q <file1> <file2> 

それにもかかわらず、ファイルが同じ場合、diffは0を返します。

関連情報