두 개의 동일한 파일이 있으면 자동으로 결과가 달라집니다. 표시하는 방법은 무엇입니까?

두 개의 동일한 파일이 있으면 자동으로 결과가 달라집니다. 표시하는 방법은 무엇입니까?

-s매개변수를 설정하면 diff다른 파일도 인쇄됩니다.

diff -s $FIRST_FILE $SECOND_FILE

답변1

Unix의 철학은 모든 작업에 도구가 있고 쉘이 모든 작업을 하나로 묶어준다는 것입니다. 따라서 비교 도구, 원하는 출력 형식을 얻기 위한 도구입니다.

이 경우 출력 형식은 매우 간단하며 이 부분은 셸을 사용하여 직접 수행할 수 있습니다.

두 파일을 비교하려면 차이점을 나열하는 대신 동일한 내용이 있는지 여부에만 관심이 있는 경우 다음을 사용하세요.cmp.

if cmp -s -- "$FIRST_FILE" "$SECOND_FILE"; then
  printf '%s\n' "$FIRST_FILE = $SECOND_FILE"
fi

답변2

가능한 해결책 중 하나는 다음과 같습니다.

diff -s $FIRST_FILE $SECOND_FILE > /dev/null
if [ $? -eq 0 ]; then
    echo "The files are identical"
fi

참고: 질문 텍스트가 변경됩니다.

답변3

기본적으로 diff동일한 파일이 제공되면 침묵을 유지합니다. 이것이 변경되는 동작의 유일한 측면입니다 -s. 따라서 항상 파일을 비교하고 차이점을 출력합니다. 파일이 동일하면 동일한 파일을 전혀 언급하지 않고 -s메시지도 출력합니다 .-s

-qsums 를 결합하면 원하는 동작을 얻을 수 있습니다 -s. -q지시문은 diff차이점을 자세히 설명하지 않고 파일이 다르다는 것만 나타냅니다(다른 경우).

예는 다음과 같습니다.

$ echo 1 > a
$ echo 2 > b
$ echo 2 > c
$ diff -qs a b
Files a and b differ
$ diff -qs b c
Files b and c are identical

답변4

파일 이름 주위에 따옴표를 넣었습니다. 파일 이름도 소문자로 변경해야 합니다.

diff "${FIRST_FILE}" "${SECOND_FILE}" > /dev/null && echo "Same"

관련 정보