코딩 기록 저장소

[23-01/유닉스 시스템] 파일과 디렉토리 검색하기 본문

학교 공부/유닉스 시스템

[23-01/유닉스 시스템] 파일과 디렉토리 검색하기

KimNang 2023. 4. 27. 12:11

1. 파일 내용 검색 : grep/egrep/fgrep

grep 사용법

grep [ 옵션 ] 패턴 파일명들

- global regular expression print

- 지정한 파일에 특정 문자열(패턴)이 들어있는지 검색

 

패턴

- 문자, 문자열, 문장, 정규표현식 (regular expression)

 

■ 옵션

옵션 기능
-i 대소문자를 무시하고 검색
-l 해당 패턴이 들어있는 파일 이름을 출력
-n 각 라인의 번호도 함께 출력
-v 명시된 패턴과 일치하지 않는 줄을 출력
-c 패턴과 일치하는 라인수 출력
-w 패턴이 하나의 단어로 된 것만 검색

 

정규 표현식

- 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어

- 주의 : 패턴을 작은 따옴표 ' '로 꼭 감싸야 함

 

■ 구성 요소

- 앵커 (Anchor) : 검색시 한 줄에서 패턴의 위치를 표현 (^, $)

- 문자 집합 (Character Set) : 하나이상의 무자들을 표현 (알파벳, 숫자,.,[],..)

- 변환자 (Modifier) : 이전 문자 집합의 반복횟수 지정(*)

 

■ 특수문자

문자 의미 결과
^ 라인의 시작 '^문자열' 문자열로 시작하는 모든 행
$ 라인의 끝 '문자열$' 문자열로 끝나는 모든 행
. 한 글자 'a...b' 한글자 대응, a로 시작해서 b로 끝나는 5글자 검색
[ ] 괄호안의 글자중 하나 '[Pp]attern' Pattern 또는 pattern이 나타나는 라인 검색
[^] 괄호 안에 있는 글자가 아닌 글자 '[^a-m]att' att앞에 a부터 m까지 나오지 않는 라인 검색
* 앞의 항목이 없거나 여러 번 반복 'ab*' a다음에 b가 없거나 반복적으로 나타나는 라인 검색

 

egrep 사용법

egrep [ 옵션 ] 패턴 파일명들

- extended regular expression을 사용하는 grep 명령

■ 확장된 패턴 표현식 특수 문자

메타 문자 의미 결과
+ 앞의 글자가 하나 이상 나옴 '[a-z]+ark' airpark, dark, bark, shark
? 없거나 한번 반복 'unix[0-9]?' unix1, unix2, unix, unix9
x|y x나 y중 하나가 나옴 'apple|orange' apple 또는 orange
( | ) 문자열 그룹 '(1|2)+'
'search(es|ing)+'
1또는 2가 하나이상
searches 또는 searching

 

fgrep 사용법

fgrep [ 옵션 ] 문자열 파일명들

- 문자열 검색

● 문자열 내의 모든 문자를 일반 문자로 해석

- 정규 표현식 사용 안함

- 모든 정규 표현식 특수 문자를 문자 그대로 검색

 

2. 파일 검색 : find

- 사용자가 시스템에 존재하는 특정 파일을 찾을 때 사용

- 검색 범위를 디렉토리 단위로 지정

- 파일의 이름, 소유자, 접근 권한, 생성 일자 등 파일의 속성을 조합하여 검색 가능

- 표현식과 일치하는 파일에 대해 파일의 절대 경로를 출력하거나 특정 명령 실행 가능

 

파일 찾기 - find

find 경로 검색조건 [ 동작 ]

■ 경로

- 파일을 찾을 디렉토리의 절대, 또는 상대 경로

memo : 현재 디렉토리 .

 

■ 검색조건

- 파일을 찾기 위한 검색 기준

- and, or를 이용하여 조건 결합 가능

 

■ 동작

- 파일의 위치를 찾은 후 수행할 동작 지정

- 기본 동작은 파일의 절대 경로를 화면에 출력

 

■ 경로 설정 예

경로 표현 찾기 시작 위치
~ 홈 디렉토리에서 찾기 시작
. 현재 디렉토리에서 찾기 시작
/etc /etc 디렉토리에서 찾기 시작 (절대 경로)
/ /(root) 디렉토리에서 찾기 시작
(전체 파일 시스템 검색)
unix unix 디렉토리에서 찾기 시작 (상대 경로)

 

■ 파일 종류 검색

문자 파일종류 문자 파일종류
d 디렉토리파일 b 블록장치특수파일
f 일반 파일 c 문자장치특수파일
l 심볼릭링크파일 s 소켓파일

 

■ 검색 조건

검색조건표현 의미 기능
-name filename 파일 이름 특정 파일명에 일치하는 파일 검색
메타 문자(*,?)사용도 가능하나 " "안에 있어야 함
-type 파일 종류 특정 파일 종류에 일치하는 파일검색(f,d)
-mtime [+|-]n
-atime [+|-]n
수정(접근)시간 수정(접근)시간이 +n일보다 오래되거나, -n일보다 짧거나 정확히 n일에 일치하는 파일 검색
-user loginID 사용자 ID loginID가 소유한 파일 모든 파일 검색
-size [+|-]n 파일 크기 +n보다 크거나, -n보다 작거나, 정확히 크기가 n인 파일 검색(n=512bytes)
-newer 기준 시간 기준 시간보다 이후에 생성된 파일 검색
-perm 사용 권한 사용 권한과 일치하는 파일 검색(8진수)

 

■ 동작

동작 정의
-exec 명령 {} ₩; exec 옵션은 ₩;으로 끝남
검색된 파일은 {} 위치에 적용됨
-ok 명령 {} ₩; exec의 확인모드 형태
사용자의 확인을 받아야 명령을 적용(rm -i)
-print 화면에 경로명을 출력 (기본 동작)
-ls 긴 목록 형식으로 검색 결과를 출력

 

■ 검색 조건의 결합 기호

- -a : and (기본)

- -o : or

- ! : not

 

■ 검색 조건 결합

- -a (and) : 결합 조건을 생략하면 자동으로 and 처리

- -o (or) : 디렉토리거나 이름이 UNIX인 파일

 

■ 검색된 파일 처리

- -exec : 이후에 지정한 명령 수행 ( -exec와 ₩;사이에 기술된 부분을 수행함 )

 

3. 명령어 검색 : which

which 명령을 이용한 명령어 검색

which 명령

- 명령어 파일의 위치를 찾아서 경로나 앨리어스를 출력

- PATH 환경 변수로 지정된 경로에서 파일을 찾음

 

■ 사용법

$which which / $which passwd