'unix find'에 해당되는 글 1건

  1. 2016.12.12 Unix 유틸(find,grep) 알아보기
2016. 12. 12. 22:40

유닉스 유틸(find , grep)에 대해서 알아보도록 하겠습니다.


1. find

  - 지정된 기준에 충족하는 파일에 대해 검색하는 기능입니다. (하위 디렉토리까지 찾습니다.)

  - 일치하는 파일의 이름 표시 또는 해당 파일에 대한 명령을 실행할 수도 있습니다.

  - print 옵션은 기본이나 지정이 안된 시스템에서는 지정이 필요합니다. (find . -name test* -print)

jhjt@jhjt-PC ~

$ find . -name test*

./test.pc

 

  >> test로 시작하는 파일 및 디렉토리를 찾아 보았습니다.


1-1 find 명령을 통해 실행 하기

  - find로 찾은 디렉토리에 대해서 추가적인 명령을 수행할수 있는 방법 입니다.

jhjt@jhjt-PC ~

$ find . -name test* -exec ls -l {} \;

-rw-r--r-- 1 jhjt None 34 11 16 23:46 ./test.pc

 

  >> test로 시작하는 파일 및 디렉토리를 검색 후 ls -l 을 수행하였습니다.

       {} 이 부분에 찾은 파일 및 디렉토리가 들어가게 됩니다.


1-2 find 명령의 옵션

  - type : 파일 및 디렉토리 조건 입니다. d는 디렉토리 , f는 파일을 의미합니다.

jhjt@jhjt-PC ~

$ find . -name test* -type d

 

jhjt@jhjt-PC ~

$ find . -name test* -type f

./test.pc

 

  

  - size : 블럭의 사이즈 조건 입니다. 

            +n 이면 n보다 큰 불럭을 의미 합니다.

            -n 이면 n보다 작은 블럭을 의미 합니다.

            n 이면 n블럭과 동일함을 의미 합니다.


jhjt@jhjt-PC ~

$ find . -size +1

./.bashrc

./.bash_history

./.bash_profile

./.inputrc

./.profile

 

jhjt@jhjt-PC ~

$ find . -size -1

.

./.ddd

./.ddd/sessions

./.ddd/themes

./aa

./aa/newfile

 

jhjt@jhjt-PC ~

$ find . -size 1

./test.pc

 


  -mtime : 파일의 수정일자 조건입니다.

               +x 현시간부터 x일 전까지의 파일을 찾는 의미 입니다.

               -x x일 이전에 수정한 파일을 찾는 의미 입니다.


jhjt@jhjt-PC ~

$ find . -mtime +1

.

./.bashrc

./.bash_history

./.bash_profile

./.ddd

./.ddd/sessions

./.ddd/themes

./.inputrc

./.profile

./aa

./aa/newfile

./test.pc

 

jhjt@jhjt-PC ~

$ find . -mtime -1

 


  -perm : 엑세스 권한에 대한 조건입니다.

             (넘버 및 모드 다 됩니다.) / u는 유저 , g는 그룹 , o는 other를 뜻합니다. 


jhjt@jhjt-PC ~

$ find . -perm 644

./test.pc


jhjt@jhjt-PC ~

$ find -perm -u=rwx

.

./.bashrc

./.bash_profile

./.ddd

./.ddd/sessions

./.ddd/themes

./.inputrc

./.profile

./aa 


2. grep

  - 지정된 패턴과 일치하는 라인을 찾는 유틸 입니다.

  - Syntax : grep [options] pattern [file1 file2 ...]

jhjt@jhjt-PC ~

$ grep sldf test.pc

sldflsdkfjlsldkfjlsdkflsdfljsdfjk

 


2-1. grep 옵션

  

 -v

 일치하지 않는 라인을 출력합니다.

 -c

 일치하는 행의 수만 출력합니다. 

 -l

 일치하는 행이 있는 파일이름만 출력합니다.

 -n

 일치하는 라인의 번호를 출력합니다.

 -i

 비교할때 대소문자를 무시합니다. (대소문자 구분 않함)

 -w

 전체단어가 일치해야 출력 합니다.


2-2. grep 정규표현식


기호 

 의미

 .

'/n'을 제외한 어떤 단일 글자와도 부합됨 

*

앞의 표현식이 0번이상 반복되는 것을 부함됨 

[]

 문자열 클래스 [] 안의 어느 단일 글자와도 부합됨 

^

 어떤 라인의 시작점에 부합됨 

$

어떤 라인의 마지막점에 부함됨 

\

 Escape Charater 뒤에 나오는 글자를 글자 그대로 해석함 

+

앞의 표현식이 1번 이상 반복되는 것에 부함됨 

?

 직전 정규 표현식이 0번이나 1번 반복되는 것에 부합됨 

 |

 정규표현식이나 이후 정규표현식 둘중에 어느것이라도 부합됨 

" "

따옴표안의 글자 그대로 해석됨 

()

몇몇 정규표현식을 묶어서 새로운 정규표현식을 구성함 


 - 실습 해본 결과 입니다.

jhjt@jhjt-PC ~

$ ps -ef | grep sh

    jhjt    6572    2336 pty0     22:35:13 /usr/bin/bash

    jhjt    2336    2320 pty0     21:40:21 /usr/bin/bash

  SYSTEM    2428    2368 ?        21:25:11 /usr/sbin/sshd

 

jhjt@jhjt-PC ~

$ cat test1.sh

start shell

shell end

test shell

 

jhjt@jhjt-PC ~

$ grep '^s' test1.sh

start shell

shell end

 

jhjt@jhjt-PC ~

$ grep 'd$' test1.sh

shell end

 

jhjt@jhjt-PC ~

$ grep '^[st]' test1.sh

start shell

shell end

test shell

 


유닉스에는 많은 유틸이 있습니다.

그중 많이 사용하는 유틸 2가지에 대해서 알아보았습니다.


다음에는 좀더 많은 유틸에 대해서 알아보도록 하겠습니다.

Posted by dlfma1985