Skip to content

find 와 grep을 잘 사용하자

조회 수 20415 추천 수 0 2009.12.10 19:48:05
가장 기본이 되는 파일 내의 특정 텍스트 찾기

grep test sample.txt
: sample.txt 파일에서 test가 들어간 라인을 찾는다.

grep test ./*
: 현재 폴더 내에서 test란 단어가 들어간 파일들을 찾아 보여준다.


find ./ -name "*.txt" -print -exec grep -n "test" {} \;
확장자가 txt인 파일들을 찾은다음 test라는 text를 포함하는 녀석의 행 까지 출력한다.
find ./ -name *.* -exec rm -f {} \;
find로 찾은 파일을 삭제한다.

find / -size +2048 -ls
2MB 이상인 파일들을 찾는다.

find / -mtime 1 -ls
최근 24시간내에 변경된 파일들을 찾는다. 

-filtype 을 find의 옵션으로 사용가능
d :디렉토리
f : 파일

응용을 해보자.
# find / -type f -size +20480 -mtime +30 -exec rm -f {} \;
파일 크기가10M 이상이며 한달 이상동안 수정되지 않은 파일을 찾아 삭제한다.

grep에서 사용하는 정규 표현식 메타 문자
메타 문자 / 기능 / 사용 예 / 사용 예 설명
^ / 행의 시작 시시자 / '^love' / love로 시작하는 모든 행과 대응
$ / 행의 끝 지시자 / 'love$' / love로 끝나는 모든 행과 대응
. / 하나의 문자와 대응 / 'l..e' / l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응
[] / [] 사이의 문자 집합 중 하나와 대응 / '[Ll]ove' / Love나 love를 포함하는 행과 대응
[^] / 문자 집합에 속하지 않는 한 문자와 대응 / '[^A-K]ove / A와 K 사이의 범위에 포함되지 않는 한 문자와 ove가 붙어있는 문자열과 대응

grep 옵션
-c : 일치하는 행의 총 수를 출력한다(count).
-h : 파일 이름을 출력하지 않는다.
-i : 대소문자를 구분하지 않는다(ignore).
-l : 패턴이 존재하는 파일의 이름만 출력한다(list file).
-n : 파일 내에 행 번호를 함께 출력한다(number).
-v : 패턴이 존재하지 않는 행만 출력한다(invert).
- w : 단어 단위로 찾는다(word).

ls와 grep을 이용하여 파일이나 디렉토리 세기..(앞에서도 한번 언급했던..)
# ls -laR ./ | grep -^ | wc -l : 하위 디렉토리를 포함한 file의 개수 파악
디렉토리 세는 것은 위 grep 옵션에서 -^ 부분을 -d 로 바꿔주기만 하면 된다.


현재 디렉토리에서 하위 디렉토리를 포함하여 검색어를 검색할때
find . -type f -print | xargs grep "string"

현재 디렉토리 위치에서 하위 디렉토리를 포함하여 string 이란 문자열을 포함한 파일 검색
find . -type f | xargs grep "string"

find . | xargs grep "string 
profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/3853/0c7/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수sort

도메인 Status 상태별 설명 안내

HDD Guardian (a graphical user interface for smartctl)

dpkg 사용법

top 화면 내용중 load average와 PRI : priority(우선순위...

ubuntu 10.04 에서 Nginx, Mysql, PHP5

HP 서버 disk 증설 (hpacucli 사용)

리눅스 메모리 관리, 왜 메모리 여유공간이 없을까? (top ...

windows smartctl

ZFS 파일에 ACL 설정

make 정리

SSL 패스워드 삭제 하기

EXT4 파일 시스템을 Btrfs 파일 시스템으로 변환하기

tar 압축을 실수로 디렉토리 생성 안하고 풀었을때 대처법

ll 명령시 날짜 전체가 보이도록 하기

hddtemp와 mrtg를 이용한 하드디스크 온도 체크 file

python과 mysql 연동시 libmysqlclient_r.so.* 에러가 날 ...

linux 커널 파라메터 수정

우분투(Ubuntu) ssh 설정하기

error: Hm, kex protocol error: type 30 seq 1 [preauth]... file

운영중인 Linux 서버에서 NTFS 파일 시스템 삭제하기

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234