파일을 비교하는 가장 간단한 방법은 cmp, 그리고 보다 자세한 파일비교를 할 때에는 diff, 세개의 파일을 비교하려면 diff3을 이용합니다. 두파일에 대하여 각 행단위 비교를 할 때에는 comm을 이용합니다.
cmp
cmp는 compare 의 약어로서 두개의 파일이 어떤 부분이 다른가를 비교할 때에 사용하는 명령어이다. 두개의 파일을 단순히 같은가 다른가를 확인할 수 있으며 또한 몇행의 몇번째 문자가 다른가를 확인할 수도 있다. 두 파일이 동일한가를 확인하고자 할 때에 주로 사용한다.
사용법 : cmp 파일명 비교할파일명
file1 과 file2를 예를 들어 설명한다.
cat file1
girls generation
cat file2
girls Generation
두 파일을 비교해본다.
cmp file1 file2
file1 file2 differ: byte 7, line 1
첫번째행에 7바이트째부터 다름이 발생하였다는 것을 의미한다(빈칸도 1바이트).
두개의 파일을 비교하여 틀린 문자의 개수와 틀린문자들에 대한 8진수 값을 출력(ASCII코드값)
cmp -l file1 file2
7 147 107
7번째 바이트, 147은 file1의 g, 107은 file2의 G
처음부터 지정된 위치까지는 무시하고 비교
cmp -i 7 file1 file2
7번째 바이트에 틀림이 있는데 7번째까지 무시하니 틀림이 없는 것으로 출력됨.
diff
diff는 differences 의 약어로서 두 파일 사이의 내용을 비교하는 명령어이다. cmp 보다 diff 가 보다 직관적이고 명확하게 찾아준다. 실행결과 차이점이 없다면 0, 차이점이 있다면 1, 실행시 에러가 발생하면 2 이상의 종료코드 값을 얻는다.
사용법 : diff 파일명 비교할파일명
diff file1 file2
1c1
< girls generation
---
> girls Generation
두 파일이 단순히 같은가 다른가를 확인
diff --brief file1 file2
Files file1 and file2 differ
diff 에 지정된 포맷으로 두파일의 차이점을 출력
diff -c file1 file2
*** file1 2013-06-15 00:34:30.920849214 +0900
--- file2 2013-06-15 00:34:49.511852997 +0900
***************
*** 1 ****
! girls generation
--- 1 ----
! girls Generation
다른 부분의 라인앞에 ! 를 출력한다.
자세한 비교
diff -d file1 file2
1c1
< girls generation
---
> girls Generation
각각의 파일을 세밀하게 분석하여 두 파일을 비교하는 옵션이다. 즉, 가장 작은 변화된 부분까지도 찾기 위하여 알고리즘을 변경하기도 한다. 따라서 diff 수행시에 수행속도가 느려질 수도 있다.
두개의 디렉토리 차이점 비교
diff -r example example2
Only in example: test
Only in example2: test2
각각의 디렉토리에만 존재하는 파일등의 정보를 보다 정확하게 확인할 수 있다. 즉, 비교대상 디렉토리의 하위디렉토리들까지 모두 비교가 되었음을 알 수 있다.
큰 파일용량의 파일 비교시 속도 증가
diff -H bigfile largefile
diff3
diff3 는 3개의 파일차이점을 비교하여 출력하는 명령어이다.
사용법 : diff3 파일명 비교할파일명 비교할파일명
diff3 file1 file2 file3
====
1:1c
girls generation
2:1c
girls Generation
3:1c
girls geNeration
비교할 파일이 바이너리파일일 경우 비교(가능한 텍스트포맷을 찾아서 비교작업을 수행
diff3 --text file1 file2 file3
comm
comm은 지정한 두파일의 행과 행을 비교할 때에 사용하는 명령어이다.
사용법 : comm [옵션] 파일명 비교할파일명
우선 비교할 파일들 내용을 살펴보자.
cat file1
girls generation
uzuro.com
uzzuzuu
cat file2
girls Generation
uzuro.com
comm file1 file2
girls Generation
girls generation
uzuro.com
uzzuzuu
첫번째 필드(단락)의 girls generation, uzzuzuu 는 file1 에만 존재하는 행의 내용을 의미하고 두번째 필드의 girls Generation 은 file2 에만 존재하는 행의 내용, 세번째 필드인 uzuro.com은 두파일 모두 공통되는 행의 내용을 의미한다.
[옵션]
- -1 : 두파일을 비교하여 첫번째 파일과 다른 두번째 파일의 내용과 공통내용만을 출력
- -2 : 두번째 파일과 다른 부분의 첫번째 파일내용과 공통내용을 출력
- -3 : 두파일의 공통된 파일은 출력하지 않음
'리눅스 > Linux 일반' 카테고리의 다른 글
리눅스 grep을 이용한 문자열 검색 및 편집처리 (0) | 2013.06.16 |
---|---|
리눅스 find - 파일 검색 (3) | 2013.06.16 |
리눅스 sort - 파일내용 정렬 (0) | 2013.06.14 |
리눅스 wc - 특정파일내에 존재하는 행수와 단어수 확인 (0) | 2013.06.14 |
리눅스 touch - 파일생성 및 파일의 날짜정보 변경 (1) | 2013.06.14 |