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/525/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
367 도메인 Status 상태별 설명 안내 ADMINPLAY 2012-12-28 4893
366 HDD Guardian (a graphical user interface for smartctl) ADMINPLAY 2013-09-22 4999
365 dpkg 사용법 ADMINPLAY 2013-04-03 5010
364 top 화면 내용중 load average와 PRI : priority(우선순위... ADMINPLAY 2013-12-24 5201
363 ubuntu 10.04 에서 Nginx, Mysql, PHP5 ADMINPLAY 2013-02-28 5238
362 HP 서버 disk 증설 (hpacucli 사용) ADMINPLAY 2015-08-05 5245
361 리눅스 메모리 관리, 왜 메모리 여유공간이 없을까? (top ... ADMINPLAY 2013-04-25 5299
360 windows smartctl ADMINPLAY 2013-09-22 5330
359 ZFS 파일에 ACL 설정 ADMINPLAY 2014-02-03 5338
358 make 정리 ADMINPLAY 2013-05-12 5341
357 SSL 패스워드 삭제 하기 ADMINPLAY 2014-04-27 5447
356 EXT4 파일 시스템을 Btrfs 파일 시스템으로 변환하기 ADMINPLAY 2015-07-07 5459
355 tar 압축을 실수로 디렉토리 생성 안하고 풀었을때 대처법 ADMINPLAY 2013-09-22 5463
354 ll 명령시 날짜 전체가 보이도록 하기 ADMINPLAY 2014-01-02 5485
353 hddtemp와 mrtg를 이용한 하드디스크 온도 체크 file ADMINPLAY 2013-12-19 5516
352 python과 mysql 연동시 libmysqlclient_r.so.* 에러가 날 ... ADMINPLAY 2014-03-27 5600
351 linux 커널 파라메터 수정 ADMINPLAY 2013-05-12 5614
350 우분투(Ubuntu) ssh 설정하기 ADMINPLAY 2013-02-27 5665
349 error: Hm, kex protocol error: type 30 seq 1 [preauth]... file ADMINPLAY 2016-05-20 5677
348 운영중인 Linux 서버에서 NTFS 파일 시스템 삭제하기 ADMINPLAY 2013-01-16 5735

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234