[Unix] 파일 찾기와 문자열 검색
locate 명령
1. 문자열 패턴이 (기본적으로 /로 시작하는) 파일 이름에 포함 될 때, 해당 파일의 이름을 출력하는 명령
- 절대 경로 상의 디렉터리나 파일 이름에 문자열이 포함되면 출력함
locate [option] pattern
- updatedb 명령에서 만들어진 데이터베이스에서 검색함
- 옵션 -b(또는 --basename)를 사용하면 절대 경로 중 마지막 이름에서만 검색함
find 명령
1. 검색 위치에서 조건에 맞는 파일을 찾고, 검색된 파일을 대상으로 명령을 수행 할 수 있음
- pathename(경로)을 지정하지 않으면 현재 디렉터리(서브 디렉터리 포함)를 기준으로 함
- expression(조건이나 액션)이 주어지지 않으면 -print가 주어짐
- 단순히 find 명령을 수행하면 현재 디렉터리와 서브 디렉터리에 존재하는 모든 파일과 디렉터리의 이름을 라인 단위로 출력함
- find/etc -iname '*passwd*' : 이름에 passwd를 포함하는 파일을 찾음
- find ~| wc -l : 사용자가 가지고 있는 파일의 총 개수를 출력함
find 명령에서 조건의 지정
조건 | 설명 |
-cmln n | 파일 또는 디렉터리 내용이나 파일 속성의 마지막 수정시간이 정확이 n분인 경우이며 n분보다 작음을 의미하려면 -n을 사용하고, n분보다 큼을 의미하려면 +n을 사용함 |
-cnewer file | 파일또는 디렉터리의 내용이나 파일 속성의 마지막 수정시간이 지정된 file보다 최근 것임을 의미 |
-empty | 파일 또는 디렉터리에 비어 있는 경우를 의미 |
-name pattern | 파일 또는 디렉터리의 이름이 pattern과 매칭되는 경우 |
-lname pattern | -name과 같으나 대소문자를 구분하지 않음 |
-nouser | 파일 또는 디렉터리 소유자가 유효한 사용자가 아닌 경우 |
-perm mode | 파일 또는 디렉터리의 접근 권한이 mode와 같은 경우로 mode는 8진수 표기법이나 기호 표기법으로 표시함 |
-size n | 파일 또는 디렉터리의 크기가 n인 경우이다. 단위로는 b(512바이트 블록), c(바이트), k(킬로바이트), M(메가바이트), G(기가바이트)가 있음 |
-type c | 파일의 타입이 c인 경우이다. 파일 타입으로는 b(블록 디바이스), c(문자 디바이스),d(디렉터리),f(정규 파일),l(심볼릭 링크) 등이 있음 |
-user name | 파일 또는 디렉터리의 소유자가 name인 경우로 name은 계정 이름 또는 UID로 표시할 수 있음 |
find 명령에서 사용되는 액션
1. find/usr/share -size +10M
2. find/data -size +500M -size -5G -exec du '{}'\;
3. find. -type f -exec file '{}'\;
4. find /home -user chris -ls
5. find /home -user chris -or -group staff -ls
6. find /bin -perm 755
7. find /home/chris/ -perm -755 -type d -ls
8. find /bin/usr/bin/sbin/usr/sbin -ctime -3
9. find ~ \(-type f -not -perm 0600 \) -or \(-type d -not -perm 0700 \)
grep 명령
1. 파일에서 지정된 문자열 패턴을 포함한 라인을 찾아 출력
- 파이프(|)를 사용하여 앞 명령의 결과(검색된 파일)을 입력으로 받아 검색할 때 grep을 자주 사용함
grep [options] pattern [files]
- pattern은 찾으려는 문자열이며 정규식으로 표현 가능
옵션 | 설명 |
-r | 파일 대신 디렉터리가 지정될 때, 포함된 모든 파일을 대상으로 검색함 |
-i | 대소문자를 구분하지 않음 |
-v | 매칭이 일어나지 않는 라인을 출력함 |
grep root /etc/passwd grep -n unix ~/*.txt ip addr show |grep inet |