파일 세트의 차이점을 경험적으로 발견

파일 세트의 차이점을 경험적으로 발견

테스트 스위트를 반복적으로 실행하여 생성된 수많은 출력 파일이 있는데 이들이 얼마나 다른지 대략적으로 알고 싶습니다. 이상적으로는 모두 동일하거나(테스트가 완전히 반복 가능함을 나타냄) 거의 동일해야 합니다(예: 타임스탬프가 있는 경우). 그래서 저는 다음과 같은 스크립트를 찾고 있습니다.

show-greatest-diff /path/to/files/*.out

따라서 100개의 *.out 파일이 있는 경우 스크립트는 diff파일을 모두 서로 비교하고 해당 파일에 대해 최대 수의 다른 줄/문자를 생성하거나(가장 다른 쌍을 식별할 수 있음) 다음을 인쇄해야 합니다 diff. 다른 경험적 유용한 결과를 생성하거나 생성하기 위해 가장 큰 차이점이 있는 것입니다.

제안된 솔루션여기파일 수가 많아 내 사용 사례에 적합하지 않습니다.

답변1

어때요?

mostdifs=-1;
for f1 in path/to/files/*.out; do 
    for f2 in path/to/files/*.out; do 
        difs=$(diff "$f1" "$f2" | wc -l); 
        [ "$difs" -gt "$mostdifs" ] && mostdifs=$difs && mostdif="$f1 : $f2";
    done 
done 
echo "$mostdif"

$f1이것은 매우 간단하며 다른 파일 및 기타 다양한 조정을 통해 동일한지 테스트하여 개선할 수 있습니다 $f2. 그러나 수백 개의 텍스트 파일에 대해 이야기하는 경우 몇 초 만에 실행되므로 복잡성이 더욱 커집니다. 그럴 가치가 없어 가능합니다.

아이디어는 각 파일 쌍에서 이를 실행 diff하고 반환되는 줄 수를 확인하는 것입니다. 숫자가 현재 최대 숫자보다 크면 파일 이름이 저장됩니다.

관련 정보