Linux

검색에 사용하는 명령어

  • -
728x90

find

-  파일을 검색할 떄 활용

find. -name $filename
# .은 현재 디렉토리를 의미
# filename을 잘 모르겠으면 '*'앞 뒤로 붙여서 탐색 가능

find . -name "*[0-9]*"
# 현재 디렉토리에서 파일 앞 뒤로는 어떤문자가 오든 상관없고 사이에 숫자가 들어간 파일을 찾아줘
# 정규표현식 사용한 것

which

- $PATH에 등록된 경로 중에서, 주어진 이름의 실행 파일의 위치를 찾는다.

- 사용하고 있는 명령어가 설치된 위치를 찾는데 유용

- $PATH에 있는 파일들은 실행권한을 자기고 있기 때문에 우리가 명령어만 알아도 사용가능 한 것

grep

- 대량의 파일에서 주어진 텍스트 또는 정구 표현식 패턴에 일치하는 텍스트를 찾는 명령어

- 파이프('|')와 함께 다양한 명령어와 조합하여 사용

- 실제 실무에서 가장 많이 사용하는 명령어 중 하나

grep 'less' less.txt 
# less.txt파일에서 less 가 들어간 라인 추출

grep -r "less than" .
# 현재 디렉토리 에서 "less than"이 들어간 모든 파일 및 라인 추출

grep -rn "[1-9]0\{3\}" .
# 현재 디렉토리에서 1000, 2000과 같은 형태의 텍스트들이 들어간 파일들을 찾고 그 파일내 라인과 라인 넘버까지 출력

grep -rn "[1-9]0\{3\}" . | grep find
# | 파이프 문자는 왼쪽에 있는 결과를 오른쪽으로 넘겨줌

- grep 사용 시 메타 문자인 ?, +, {, }, |, (, ) 앞에는 \를 붙여 줘야 하는 경우가 있음.

sed

- 텍스트를 필터링하거나 변환하는 스트림 에디터

- sed 's/old_word/new_word/g' target_file

     -> target_file에서 old_word를 new_word로 모두 교체한 결과를 출력

- vi에서도 :%s/old_word/new_word/g 를 이용하여 string교체 가능

- 아예 원본 파일 자체에 적용하고 싶은 경우에는 -i 옵션 사용 가능

sed -e 's/find/where/g' -e 's/FIND/WHERE/g' find.txt
# 이처럼 -e명령을 사용하여 두 개의 조건을 모두 사용 가능.

sed -i 's/find/where/g' find.txt
# 원본 파일에 적용하여 저장

grep -rl "[1-9]0\{3\}" . | xargs sed -i 's/-fprintf /wrong string/g'
# xargs는 파이프 전에 있던 결과를 인자로 받아서 넘겨주는 역할을 함

 

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.