2つのファイルがあるとすると、file1から各行を読み取り、それがfile2にあるかどうかを確認するシェルスクリプトを作成します。行が見つからない場合は、2つのファイルが異なり、終了するはずです。ファイルには、単語番号などを含めることができます。例えば :
file1:
Hi!
1234
5678
1111
hello
file2:
1111
5678
1234
Hi!
hello
この場合、2つのファイルは等しいはずです。 file2に「hello !!!」がある場合「こんにちは」の代わりに、ファイルは異なります。私はbashスクリプトを使用しています。これどうやってするの。ネストされたループでそれを行う必要があることは重要ではありませんが、それが唯一の方法であると私が考えたものです。ご協力いただきありがとうございます。
バッシュで:
diff --brief <(sort file1) <(sort file2)
diff
は、終了ステータスを設定して、ファイルが同じかどうかを示します。終了ステータスは、特殊変数$?
でアクセスできます。このようにして、イグナシオの答えを拡張できます。
diff --brief <(sort file1) <(sort file2) >/dev/null
comp_value=$?
if [ $comp_value -eq 1 ]
then
echo "do something because they're different"
else
echo "do something because they're identical"
fi
も動作するはずです:
comm -3 file1 file2
答えにはこれで十分だと思います...
[[]] && ||と思うので、これを追加します構成はかなりきれいです:
#!/bin/bash
[[ `diff ${HOME}/file1 ${HOME}/file2` ]] &&
(echo "files different") ||
(echo "files same")
diff
は完全に適切な回答ですが、おそらく2つのファイルのバイトごとの比較を行うためのcmp
を代わりに使用するでしょう。
https://linux.die.net/man/1/cmp
このため、バイナリファイルを比較できるという追加のボーナスがあります。
if cmp -s "file1" "file2"
then
echo "The files match"
else
echo "The files are different"
fi
個人的にはテストしていませんが、diff
を使用するよりも高速だと思いました。