[리눅스] grep과 find 명령어 with 정규표현식

용씨·2021년 9월 29일
0
post-thumbnail

grep 명령어

대상 파일들을 읽어서, 해당 패턴을 검색하고, 패턴을 포함하는 줄을 출력

$ grep 패턴 파일 

다양한 버전

$ grep with you.txt
> you.txt에서 with 문자열을 포함하는 줄 출력

$ grep -w with you.txt
> you.txt에서 with 단어를 포함하는 줄 출력

$ grep -n with you.txt
> you.txt에서 with 문자열을 포함하는 줄+줄번호 출력

$ grep -i with you.txt
> you.txt에서 with 문자열을 대소문자 구분하지 말고 포함하는 줄 출력

$ grep -v with you.txt
> with 단어를 제외하고 you.txt를 출력한다.

정규표현식(regular expression)

정규표현식설명
.임의의 한 문자
*암의의 문자 0개 이상
+암의의 문자 1개 이상
[ ][과 ]사이의 문자 중 하나
[^...][^과 ]사이의 문자를 제외한 나머지 문자 중 하나
^줄의 시작
$줄의 끝

grep 명령어에 정규표현식을 쓸 수 있다.

$ grep -w 'st.*d' you.txt
> st로 시작하고 d로 끝나는 단어를 you.txt에서 찾아라 
> ex) stand

$ grep -w 'w.*t' you.txt
> w로 시작하고 t로 끝나는 단어를 you.txt에서 찾아라 
> ex) wait, without

$ grep '^root' /etc/passwd
> root로 시작하는 줄을 /etc/passwd에서 찾아라 

$ grep 'bash$' /etc/passwd
> bash로 끝나는 줄을 /etc/passwd에서 찾아라 

$ grep '[aA]pple' test.txt
> apple이나 Apple을 test.txt에서 찾아라

$ grep '^[ab]' test.txt
> a나 b로 시작하는 줄을 test.txt에서 찾아라 

find 명령어

옵션의 검색 조건에 따라 대상 디렉터리 밑에서 해당되는 파일을 모두 찾아 출력

$ find 디렉터리 [-옵션]
검색 조건 및 처리 방법설명
-name 파일 파일 이름으로 찾는다.
-atime +n접근 시간이 n일 이전인 파일을 찾는다.
-atime -n 접근 시간이 n일 이내인 파일을 찾는다.
-mtime +nn일 이전에 변경된 파일을 찾는다.
-mtime -nn일 이내에 변경된 파일을 찾는다.
-perm nnn파일 권한이 nnn인 파일을 찾는다.
-type x파일 타입이 x인 파일들을 찾는다.
-size n 사이즈가 n이상인 파일들을 찾는다.
-links n링크된 개수가 n인 파일들을 찾는다.
-user 사용자이름 사용자이름으로 찾는다.
-group 그룹이름그룹이름으로 찾는다.
-print 찾은 파일의 절대 경로명을 화면에 출력한다.
-exec cmd {}; 찾은 파일들에 대해 cmd 명령어를 실행한다.

예시

$ find /usr -name '*.c" -print
> /usr 밑에 .c 파일들을 찾아 경로명 출력

$ find . -name ping -ls
> 이름이 ping인 파일을 찾아 ls 명령어를 수행 

$ find .type d -print
> 디렉터리(d) 파일을 찾아 경로명 출력

$ find . -perm 700 -ls
> 사용 권한이 700인 파일을 찾아 ls 명령어 수행

$ find . -size + 1024 -print
> 1024 bytes 이상인 파일을 찾아 출력

$ find . -name core -size +2048 –ls
> 파일 이름이 core이고 크기가 2048 bytes 이상인 파일을 찾아 ls 명령어 수행

$ find . -user chang -print 
> 파일 소유자가 chang인 파일을 찾아 출력

$ find . -atime +30 -print 
> 30일 이전에 접근되었던 파일을 찾아 출력

$ find . -mtime -7 -print 
> 7일 이내에 수정된 적이 있는 파일들 출력

$ find . -name core -exec rm -i {}; 
> 이름이 core인 파일에 대해 rm 명령어 수행

$ find . -name ‘*.c’ -atime +30 -exec ls -l {};
> 30일 이전에 접근된 파일 중 *.c를 찾아 ls -l 명령어 수행
profile
아침형 인간이 목표

0개의 댓글