
저는 OSX에서 작업 중이며 디렉토리에 여러 개의 CSV 파일이 있습니다. 두 개가 동일한지 확인하고 싶습니다.
난 노력 했어:
cmp file1.csv file2.csv || echo "files are different"
이것은 처음 두 파일이 다르다는 것을 알려줍니다.
나는 또한 다음을 시도했습니다.
diff -q --from-file *.csv
이것은 나에게첫 번째파일은 다른 파일과 다릅니다.
하지만 수동으로 수행할 필요 없이 모든 파일에 대해 이를 어떻게 확인할 수 있습니까?
답변1
다음은 Linux에서 작동합니다. 이것이 작동하는지 테스트할 Mac 터미널이 없습니다.
$ md5sum * | sort | uniq --check-chars=32 --group
36da49e13da596245e85e9e47ab8a04f *y
8c3c2e6aa3be26d9f1bbbcd9a401e88e *x
8c3c2e6aa3be26d9f1bbbcd9a401e88e *z
이 프로그램에는 uniq
정렬된 입력이 필요합니다. 다른 출력 옵션에 대해서는 매뉴얼 페이지를 확인하십시오.
답변2
Steven의 답변 외에도 다음을 터미널에 입력해야 합니다.
shasum * | sort | uniq
그리고 그것은 당신에게 결과를 제공할 것입니다.
답변3
당신이 정말로 원하는 것은 멋진 쉘 스크립트입니다. 뇌사 쉘 스크립트는 다음과 같습니다:
for i in `ls`; do diff -sq --from-file=$i `ls` 2> /dev/null; done | grep identical
물론 이것의 문제는 검사가 이미 수행된 경우에도 자신을 포함하여 각 파일을 다른 모든 파일과 비교한다는 것입니다. 더 적은 공간에서 올바른 작업을 수행할 수 있는 멋진 awk 스크립트가 있다고 확신하지만 지금은 별로 어색함을 느끼지 않습니다.
고려해야 할 다른 diff 옵션은 -w 공백이 중요하지 않은 경우, -b 공백의 존재가 중요하지만 실제로 그 양이나 종류가 무엇인지 신경 쓰지 않는 경우 --strip-입니다. 새 줄과 캐리지 리턴이 모두 필요하다고 생각하는 시스템에서 일부 파일이 만들어진 경우 후행-cr입니다.