대상 파일들을 읽어서, 해당 패턴을 검색하고, 패턴을 포함하는 줄을 출력
$ 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를 출력한다.
정규표현식 | 설명 |
---|---|
. | 임의의 한 문자 |
* | 암의의 문자 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 디렉터리 [-옵션]
검색 조건 및 처리 방법 | 설명 |
---|---|
-name 파일 | 파일 이름으로 찾는다. |
-atime +n | 접근 시간이 n일 이전인 파일을 찾는다. |
-atime -n | 접근 시간이 n일 이내인 파일을 찾는다. |
-mtime +n | n일 이전에 변경된 파일을 찾는다. |
-mtime -n | n일 이내에 변경된 파일을 찾는다. |
-perm nnn | 파일 권한이 nnn인 파일을 찾는다. |
-type x | 파일 타입이 x인 파일들을 찾는다. |
-size n | 사이즈가 n이상인 파일들을 찾는다. |
-links n | 링크된 개수가 n인 파일들을 찾는다. |
-user 사용자이름 | 사용자이름으로 찾는다. |
-group 그룹이름 | 그룹이름으로 찾는다. |
찾은 파일의 절대 경로명을 화면에 출력한다. | |
-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 명령어 수행