교재 : 리눅스 시스템 원리와 실제 (창병모, 생능출판)
8.1 파일 속성으로 파일 찾기 : find 명령어
- 파일 이름이나 속성을 이용하여 해당하는 파일을 찾는다
- 사용법 : 옵션의 검색 조건에 따라 지정된 디렉터리 아래에서 해당되는 파일들을 모두 찾아 출력한다.
$ find 디렉터리 [-옵션]
- 검색 조건 : 여러 검색 옵션을 조합해서 사용 가능
검색 조건 및 처리 방법 | 설명 |
-name 파일명 | 파일명으로 찾는다. |
-atime +n | 접근 시간이 n일 이전인 파일을 찾는다. |
-atime -n | 접근 시간이 n일 이내인 파일을 찾는다. |
-atime n | 접근 시간이 n일 전인 파일을 찾는다. |
-mtime +n | n일 이전(이상 전)에 수정된 파일을 찾는다. |
-mtime -n | n일 이내에 수정된 파일을 찾는다. |
-mtime n | n일 전에 수정된 파일을 찾는다. |
-perm nnn | 접근 권한이 nnn인 파일을 찾는다. |
-type x | *파일 종류가 x인 파일들을 찾는다. |
-size n | 크기가 n 블록(512바이트)인 파일들을 찾는다. |
-links n | 링크 개수가 n인 파일들을 찾는다. |
-user 사용자명 | 파일의 소유자가 사용자명인 파일을 찾는다. |
-group 그룹명 | 그룹명을 갖는 그룹에 속한 파일을 찾는다. |
찾은 파일의 절대 경로명을 화면에 출력한다. | |
-ls | 찾은 파일에 대해 ls -dils 명령어 실행 결과를 출력한다. |
-exec cmd {} | 찾은 파일들에 대해 cmd 명령어를 실행한다. ex) $ find . -name "*.c" -atime +30 -exec ls -l {} \; |
* 파일 종류
- d : 디렉터리
- f : 일반 파일
- l : 심볼릭 링크
- b : 블록 장치 파일
- c : 문자 장치 파일
- s : 소켓 파일
8.2 파일 필터링 : grep 명령어
- 사용법 : 파일(들)을 대상으로 지정된 패턴의 문자열을 검색하고, 해당 문자열을 포함하는 줄들을 출력한다.
$ grep 패턴 파일*
- 옵션 사용 가능
옵션 | 기능 |
-i | 대소문자를 무시하고 검색한다. |
-l | 해당 패턴이 들어있는 파일 이름을 출력한다. |
-n | 각 줄의 줄번호도 함께 출력한다. |
-v | 명시된 패턴을 포함하지 않는 줄을 출력한다. |
-c | 패턴과 일치하는 줄 수를 출력한다. |
-w | 패턴이 하나의 단어로 된 것만 검색한다. |
- 정규식
문자 | 의미 | 예 |
. | 임의의 한 문자를 의미한다. | 'a...b' : a로 시작해서 b로 끝나는 다섯 글자 문자열 |
* | 바로 앞의 것을 0번 이상의 반복 | 'a*b'는 b, ab, aab, ... 등의 문자열 |
[] | [과 ] 사이의 문자 중 하나를 의미 (- 기호 : 문자의 범위 지정) |
'[ab]c'는 ac, bc [a-z]는 알파벳 소문자 |
[^...] | [^과 ] 사이의 문자를 제외한 나머지 문자 중 하나. | '[^abc]d' 는 ed, fd 등의 문자열 [^a-z]는 알파벳 소문자가 아닌 모든 문자 |
^, $ | 각각 줄의 시작, 끝을 의미. | '^문자열'은 문자열로 시작하는 줄, '문자열$'는 문자열로 끝나는 줄 |
- 파이프와 함께 grep 명령어 사용
: 어떤 명령어을 실행하고 그 실행 결과 중에서 원하는 단어 혹은 문자열 패턴을 찾고자 할 때 사용함.
8.3 파일 정렬 : sort 명령어
- 사용법 : 텍스트 파일(들)의 내용을 줄 단위로 정렬한다. 옵션에 따라 다양한 형태로 정렬한다.
$ sort [-옵션] 파일*
- 정렬 방법
- 정렬 필드를 기준으로 줄 단위로 오름차순 정렬
- 기본적으로 각 줄의 첫 번째 필드가 정렬 필드로 사용됨.
- -r 옵션을 사용하여 내림차순으로 정렬 가능.
- 정렬 필드 지정
필드 지정 | 기능 |
-k 필드 번호 | 필드번호에 해당하는 필드를 기준으로 정렬한다. 이 옵션에서 필드번호는 1부터 시작된다. |
+시작필드 -종료필드 | 시작필드부터 종료필드-1까지의 필드들을 기준으로 정렬한다. 이때 필드 번호는 0부터 시작된다. |
- sort 명령어의 옵션
옵션 | 기능 |
-b | 앞에 붙는 공백을 무시한다. |
-c | 정렬되지 않는 상태로 출력한다. |
-d | 숫자, 문자, 공백만 비교하여 사전식 순서로 정렬한다. |
-f | 대소문자를 구분하지 않고 정렬한다. |
-n | 숫자 문자열의 숫자 값에 따라 비교하여 정렬한다. |
-r | 역순(내림차순)으로 정렬한다. |
-t문자 | 지정한 문자를 필드 구분자로 사용한다. ex) sort -t: -k 3 -n 파일 |
-o | 정렬된 내용을 지정된 파일에 저장할 수 있다. ex) $ sort -o sort.txt test.txt |
8.4 파일 비교
1) cmp 명령어
- 사용법 : 파일1과 파일2가 같은지 비교한다.
$ cmp 파일1 파일2
- 출력
- 두 파일이 같으면 아무 것도 출력하지 않음.
- 두 파일이 서로 다르면 서로 달라지지 위치 출력
2) diff 명령어
- 사용법 : 파일1과 파일2를 줄 단이로 비교하여 그 차이점을 출력한다. (-i 옵션은 대소문자를 무시하여 비교)
$ diff [-i] 파일1 파일2
- 출력 :첫 번째 파일을 두 번째 파일 내용과 같도록 바꿀 수 있는 편집 명령어 형태
- 추가(a) : 첫 번째 파일의 줄 n1 이후에 두 번째 파일의 n3부터 n4까지의 줄들을 추가하면 두파일은 서로 같다.
- ex) n1an2,n3
- 삭제(d) : 첫 번째 파일의 n1부터 n2까지의 줄들을 삭제하면 두 번째 파일의 줄 n3 이후와 서로 같다.
- ex)n1,n2dn3
- 변경(c) : 첫 번째 파일의 n1부터 n2까지의 줄들을 두 번째 파일의 n3부터 n4까지의 줄들로 대치하면 두 파일은 서로 같다.
- ex)n1,n2cn3,n4
8.5 기타 파일 조작
1) 파일 분할 : split
- 사용법
$ split [-l n] 입력파일 [출력파일]
- 하나의 입력파일을 일정한 크기의 여러 개 작은 파일들로 분할한다.
- 1000줄씩 분할하여 xaa, xab, ... 형태의 파일명으로 저장한다.
- -l n 옵션을 이용하여 분할할 줄 수를 지정할 수 있다.
2) 파일 합병 : cat
- 파일 합병
$ cat 파일1 파일2 > 파일3
: 파일1과 파일2의 내용을 붙여서 새로운 파일 3을 만들어준다.
3) 파일 합병 : paste
- 줄 단위 파일 합병
$ paste [-s] [-d구분문자] 파일*
: 여러 파일들을 줄 단위로 합벼하여 하나의 파일을 만들어준다. (-s : 한 파일 끝에 다른 파일 내용을 덧붙인다.)
'전공과목 정리 > 리눅스시스템 + 시스템프로그래밍' 카테고리의 다른 글
[리눅스시스템🐧] 10장 Bash 쉘 스크립트 (2) | 2024.01.06 |
---|---|
[리눅스시스템🐧] 9장 유틸리티 (4) | 2024.01.05 |
[리눅스시스템🐧] 7장 인터넷과 서버 (2) | 2024.01.03 |
[리눅스시스템🐧] 6장 프로세스 (4) | 2024.01.03 |
[리눅스시스템🐧] 5장 쉘과 명령어 사용 (2) | 2024.01.03 |