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는 파이프 전에 있던 결과를 인자로 받아서 넘겨주는 역할을 함