기록하는 중/UNIX

[Unix] 파일 찾기와 문자열 검색

성장하는 요롱이 2023. 11. 26. 06:54
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