less & more: 대용량 파일을 페이지 단위로 읽기

less와 more로 대용량 텍스트 파일을 페이지 단위로 탐색하고, less의 고급 탐색·검색 키를 익혀 실무에 활용한다.

· 5 min read · PALDYN Team

지난 글에서 cat, tac, head, tail로 파일 내용을 출력하는 방법을 배웠다. 이번 글에서는 대용량 파일을 화면 한 페이지씩 넘기며 읽는 페이저(pager) 명령어lessmore를 다룬다. 수천 줄짜리 로그 파일이나 매뉴얼 페이지를 다룰 때 없어서는 안 될 도구다.

more — 가장 간단한 페이저

more는 Unix 초기부터 존재하던 페이저다. 파일 내용을 화면 한 페이지씩 출력하고, Space를 누르면 다음 페이지로 넘어간다.

more /var/log/syslog
more -d file.txt       # 하단에 도움말 표시
more +20 file.txt      # 20번째 줄부터 시작

more의 큰 단점은 위로 스크롤이 불가능하다는 점이다. 파일 끝에 도달하면 자동으로 종료된다. 이런 한계 때문에 현대적인 시스템에서는 lessmore를 대체한다.

less — 더 강력한 페이저

lessmore의 기능을 모두 포함하면서 훨씬 많은 기능을 제공한다. **“less is more”**라는 이름답게, 이름이 less지만 more보다 기능이 훨씬 많다. man 명령도 내부적으로 less를 사용한다.

less file.txt
less -N file.txt           # 줄 번호 표시
less -S file.txt           # 긴 줄을 잘라서 표시 (가로 스크롤)
less -i file.txt           # 검색 시 대소문자 무시
less -R file.txt           # ANSI 색상 코드 렌더링
less +F /var/log/syslog    # tail -f 모드로 시작
less +/error file.txt      # 'error' 첫 발견 위치에서 시작

less 핵심 키 조작

less를 열고 나면 vim과 유사한 키 체계로 파일을 탐색한다.

동작
Space / f다음 페이지
b이전 페이지
j / 한 줄 아래
k / 한 줄 위
g파일 맨 처음
G파일 맨 끝
50g50번째 줄로 이동
50%파일의 50% 위치로 이동
/패턴아래 방향 검색
?패턴위 방향 검색
n / N다음/이전 검색 결과
F실시간 추적 모드(tail -f와 동일)
v$EDITOR로 현재 파일 열기
q종료

less 탐색 키 레퍼런스

less의 검색 기능

/패턴을 입력하면 파일에서 정규 표현식으로 검색할 수 있다. 검색 결과는 하이라이트되며 n/N으로 다음/이전 결과로 빠르게 이동한다.

# less 안에서 검색 예시
/ERROR            # 'ERROR' 문자열 검색
/[0-9]{3}         # 세 자리 숫자 패턴 검색
?WARNING          # 위 방향으로 'WARNING' 검색

-i 옵션을 주면 대소문자를 무시하고 검색한다. &패턴을 입력하면 해당 패턴에 일치하는 줄만 보여주는 필터 모드가 된다.

여러 파일 탐색

less는 여러 파일을 인수로 받으면 한 세션에서 모두 탐색할 수 있다.

less file1.txt file2.txt file3.txt

안에서 :n(next)으로 다음 파일, :p(previous)로 이전 파일로 이동한다. :f를 누르면 현재 파일 이름과 위치 정보가 표시된다.

less vs more 기능 비교

파이프라인에서 less 사용

less는 파이프에서도 자연스럽게 동작한다. 출력이 많은 명령의 결과를 less로 넘기면 페이지 단위로 편하게 볼 수 있다.

ps aux | less
grep -r "TODO" ./src | less
git log --oneline | less
dmesg | less

$PAGER 환경 변수에 less를 설정해 두면 man, git log 등 페이저를 사용하는 명령 모두에서 less가 사용된다.

export PAGER=less
export LESS='-RiN'    # -R: 색상, -i: 대소문자무시, -N: 줄번호

LESSOPEN — 압축 파일 직접 보기

lessLESSOPEN 환경 변수를 통해 전처리기를 연결할 수 있다. lesspipe를 설정하면 .gz, .tar.gz, .zip 등 압축 파일을 압축 해제 없이 바로 열어볼 수 있다.

eval "$(lesspipe)"    # ~/.bashrc 에 추가
less archive.tar.gz   # 압축 해제 없이 내용 목록 확인
less file.gz          # gzip 파일을 바로 열기

지난 글: cat·tac·head·tail: 파일 내용 보기 4총사

다음 글: cp·mv·rm: 파일 복사·이동·삭제 완전 정복


읽어주셔서 감사합니다. 😊