파일이 다른 파일의 순열인지 확인하는 방법은 무엇입니까?

파일이 다른 파일의 순열인지 확인하는 방법은 무엇입니까?

예를 들어, 함수가 완전히 재구성된 소스 코드 파일을 생각해 보세요. 줄 순서를 바꾸는 것이 유일한 변경인지 확인할 수 있는 명령이 있습니까?

(즉, 행이 추가, 제거 또는 변경되지 않았음을 의미합니다)

답변1

간단한 대답은 "두 파일의 정렬된 버전을 비교하십시오"입니다.
존재하다 bash:

diff <(sort file1) <(sort file2)

분명히 이것은 두 파일이 프로그래밍 언어의 소스 파일과 동일한 의미를 갖는다는 것을 의미하지는 않습니다(둘 다 구문상 정확하다고 가정).

답변2

누군가가 GNU 버전을 작성해주기를 바라기 때문에 이것을 언급하는 것뿐입니다.

브렌다 S. 베이커전 Bell Labs 회원이었던 는 다음과 같은 프로그램을 작성했습니다.반복하다이것은 당신이 원하는 것 이상을 수행합니다. dup을 사용하여 두 C 시스템을 비교하고 일종의 중복 코드(복사된 함수, 이름이 바뀐 변수 또는 일부 사소한 변경 사항)를 찾을 수 있습니다.

SCO의 윤리적인 사람이 Linux 소스 코드를 귀중한 SCO "지적 재산"과 비교했다면 전체 SCOg 실패는 피할 수 있었을 것입니다.

관련 정보