최근에 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 |
댓글