본문 바로가기
language/Linux terminal

linux find, grep 명령어

by 파란하늘코더 2021. 1. 24.
반응형

최근에 linux에서 작업을 많이하다보니 원하는 file이나 구문을 찾을 때 find, grep으로 많이 찾게 됩니다

 

명령어에 따른 옵션이 너무 많은데 이걸 일일히 다 외울수도 없고

 

필요할때 마다 검색을 해서 하긴 하지만 자주 쓰이는 옵션들을 정리해두려고 합니다.


1. find 명령어

find는 linux에서 원하는 파일이나 디렉토리를 검색할 때 사용하는 명령어 입니다.

 

file 내부의 내용을 읽어보지는 않고 파일명, 디렉토리명 기준으로 탐색을 하게 되며, 자세한 정보는

 

find --help

 

를 입력하면 어떤 방식으로 명령어를 쳐야하는지 나오게 됩니다

 

그럼 아래와 같은 폴더구조를 갖는다고 하였을 때를 예로들어서 연습을 해봤습니다

주로 사용하는 명령어만 연습해 봤습니다.

"fold_*" 인 파일/디렉토리 모두 찾기 find ./ -name "fold_*"
"fold_*" 인 파일 모두 찾기 find ./ -name "fold_*" -type f
"fold_*" 인 디렉토리 모두 찾기 find ./ -name "fold_*" -type d
".sh" 파일 찾아서 실행하기 find ./ -name "*.sh" -exec {} \;
"*.log" 파일을 현재 폴더에서만 찾기 find ./ -maxdepth 1 -name "*.log"
비어있는 파일 찾기 find . empty

위의 명령어는 대부분 옵션의 위치가 상관없이 돌아간다

 

예를들어 

find ./ -name "fold_*" -type f
find ./ -type f -name "fold_*"

이 두가지 구문은 동일한 결과를 내놓는다


2. grep 명령어

grep은 입력으로 전달된 파일 내용중에 특정 문자열을 찾고자 할 때 사용하는 명령어 입니다.

 

이 명령어는 find와 같이 종종 사용되는데 grep만을 살펴봅시다

 

우선 grep의 help는 아래와 같이 명령어를 치면 나옵니다

grep --help

find보다 훨씬 많은 옵션들이 있는데 input으로 받을 Pattern에 대한 옵션과

 

출력을 할때 어떻게 보여줄지에 대한 옵션들이 있는데 그중에서 제가 자주 쓰는 옵션만 정리를 해보겠습니다

 

현재 폴더의 text_top.txt에서 123 찾기 grep "123" ./text_top.txt
현재 폴더의 모든.txt에서 123찾기 grep "123" ./*.txt
하위폴더를 포함하여 123 찾기 grep "123" -r
하위폴더를 포함하여 123이 매칭되는 라인 찾기 grep "123" -r -n
라인 처음 시작이 1로 시작되는 패턴 찾기 grep "^1"
"123"단어 단위로 찾기 grep "123" -v

제가 주로 쓰는 건 위와 같은 옵션정도 인거같고 나머지는 찾아보면서 쓰고있습니다.


 

실은 grep이나 find나 멋있게 쓰려면 정규표현식을 적용하면 정말 편하게 검색을 할 수가 있습니다.

 

그래서 다음주부터는 정규표현식 공부를 조금씩 해보려고 합니다. ^^

'language > Linux terminal' 카테고리의 다른 글

[linux] time 명령어 사용법(real, user, sys)  (0) 2021.02.02
[make] PHONY 사용법  (0) 2021.02.02
linux 파일만, 폴더만 출력하기  (0) 2021.01.30
linux 터미널 명령어 alias  (0) 2021.01.24
tmux 사용법 정리  (0) 2020.11.15

댓글