개발 블로그

[Linux] 파일 검색 및 조작 명령어 본문

시스템/Linux

[Linux] 파일 검색 및 조작 명령어

갹둥 2024. 8. 27. 00:07

오늘은 코드를 너무 많이 본 것 같아 퇴근 후 또 코드보면 눈이 무리일 것 같아서 짧게 리눅스 공부한거 정리

업무할 때 저는 너무 리린이(리눅스 어린이)라서 아직도 뚝딱거립니다...🥹

로그든 뭐든 빨리 빨리 검색하고 싶지만...뭐 공부도 하고 어쩌피 쓰던 명령어 위주로 계속 쓰니께 치다보면 늘겠지?

 

파일 검색 및 조작 명령어 

1. find

  • 특정 조건에 맞는 파일이나 디렉토리를 검색할 때 사용
  • find [경로] [조건] [액션]
  • 검색 범위를 디렉토리나 파일명, 수정 시간, 크기 등으로 제한할 수 있어 매우 유연
  • 옵션
    • -name: 파일 또는 디렉토리 이름으로 검색
    • -type: 파일 유형으로 검색 (f는 파일, d는 디렉토리)
    • -size: 파일 크기로 검색
    • -mtime: 파일의 마지막 수정 시간으로 검색
find /home/gaeun -name "*.txt" # gauen 홈 디렉토리에서 *.txt 검색
find /var/log -type f -name "*.log" # /var/log에서 파일 중 
find / -size +100M
find /home/user -mtime -7

 

2. grep

  • 파일 내에서 특정 패턴을 검색하는 데 사용
  • 정규 표현식을 활용해 더욱 강력한 검색을 할 수 있음
  • grep [옵션] "패턴" [파일명]
  • 주요 옵션:
    • -i: 대소문자를 구분하지 않고 검색
    • -r: 디렉토리 내 모든 파일을 재귀적으로 검색
    • -v: 패턴이 일치하지 않는 줄을 출력
    • -n: 줄 번호와 함께 검색 결과를 출력
    • -l: 패턴이 일치하는 파일 이름만 출력
grep -i "error" /var/log/syslog # 대소문자 구분 없이 파일에서 "error" 검색 
grep -r "TODO" /home/user/projects # 디렉토리 내 모든 파일에서 "TODO"를 검색 
grep -v "^#" /home/gaeun/example.c # 주석으로 시작하지 않는 줄을 검색 
grep -n "main" example.c # exmaple.c에서 main을 줄과 함께 검색 
grep -l "pattern" *.txt # pattern이 포함된 파일 이름을 출력

 

 

3. sed(Stream Editor)

  • 파일 내에서 텍스트를 대체하거나 삭제할 때 유용
  • 주로 정규 표현식과 함께 사용
  • sed [옵션] 's/패턴/대체문자열/' [파일명]
  • 주요 옵션
    • -e: 명령어를 추가
    • -f: 파일에서 sed 명령어를 읽어 실행
    • -i: 파일을 직접 수정, 이거 안쓰면 실제 파일을 수정하는건 아님
sed 's/oldtext/newtext/g' file.txt # file.txt에서 "oldtext"를 "newtext"로 대체
sed '3d' file.txt # file.txt에서 세 번째 줄을 삭제
sed -e 's/foo/bar/' -e 's/baz/qux/' file.txt # 파일을 수정하면서 두 가지 대체 작업을 수행
sed -n '2p;4p' file.txt # 두 번째와 네 번째 줄만 출력
sed -i 's/20240801/20240827/' file.txt # 원본 파일을 수정
sed -i.backup 's/20240801/20240827/' file.txt # 원본 파일 수정하고 백업 파일 생성

 

 

 

4. awk

  • 텍스트 데이터에서 필드를 추출하고 조작하는 데 사용
  • 로그 파일 분석이나 데이터를 처리하는 데 매우 유용
  • awk '패턴 {액션}' [파일명]
  • 파일의 특정 열을 추출
awk '{print $1, $3}' file.txt # file.txt의 첫 번째와 세 번째 필드를(공백 구분) 출력
awk '$3 > 50 {print $1, $3}' file.txt # 세 번째 필드가 50보다 크면 첫 번째, 세 번째 필드 출력
  • 특정 패턴이 포함된 줄을 필터링
awk '/error/ {print $0}' /var/log/syslog # syslog 파일에서 "error"가 포함된 줄을 출력

 

 

나중에 스크립트에 잘 활용해보겠습니다 

'시스템 > Linux' 카테고리의 다른 글

[Linux] 사용자 및 그룹 관리  (0) 2024.08.22