
두 개의 서로 다른 디렉토리에 정확히 동일한 내용이 있는지 확인하는 쉬운 방법은 무엇입니까?
답변1
find
, sha1sum
및 일련의 파이프를 조합하면 이 목표를 달성할 수 있습니다.
find /path/to/files -type f -print0 | sort -z | xargs -0 sha1sum | cut -c1-40 | sha1sum
그러면 다음과 같은 출력이 제공됩니다.
98f3a7c54a8f51dd86506a26d4d3bd90e6e4b821 -
메모:물론 후행 대시는 무시할 수 있습니다.
확인하려는 경로에서 이것을 실행하면 두 디렉터리가 동일한지 여부를 확인할 수 있습니다. 그렇지 않은 경우 명령 편집을 시작하여 다른 파일을 찾을 수 있습니다. 시간이 많이 걸리기는 하지만 이를 수행하는 간단한 방법 중 하나는 를 제거하는 것입니다 | cut -c1-40 | sha1sum
. 그러면 각 파일과 해당 sha1 해시가 나열됩니다.
어떻게 작동하나요?
설명 | |
---|---|
find /path/to/files |
/path/to/files 디렉토리 에서 항목 목록을 반환합니다. |
-type f |
파일만 포함 |
-print0 |
표준 출력에 전체 파일 이름을 인쇄하고 그 뒤에 널 문자가 옵니다. |
| |
그런 다음 |
sort -z |
줄 바꿈 대신 줄 구분 기호로 null을 사용하여 목록을 정렬합니다. |
| |
그런 다음 |
xargs -0 sha1sum |
목록의 각 값을 다음을 통해 실행합니다.sha1sum |
| |
그런 다음 |
cut -c1-40 |
가져가다단지처음 40자(sha1의 길이) |
| |
그런 다음 |
sha1sum |
sha1 목록의 sha1 해시를 생성합니다. |