두 파일의 내용을 비교하고 내용이 다르면 다른 스크립트를 실행하는 스크립트를 사용해야 하지만 내용이 같으면 아무 작업도 수행하지 않습니다. 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을 반환합니다.