Devin.KR
로그인

리눅스 ls 명령어 사용법 - 옵션 정리와 실전 예제

개발자 조회 2

이 명령어를 언제 쓰는가

서버에 접속해서 가장 먼저 치는 명령이 ls다. 배포가 제대로 올라갔는지 파일 시각을 확인할 때, 로그가 언제까지 쌓였는지 볼 때, 권한 문제로 서비스가 안 뜰 때 소유자와 퍼미션을 확인할 때 전부 ls로 시작한다.

단순히 "파일 목록 보기"로 외우면 실무에서 쓸모가 없다. 실제로 필요한 건 정렬(시간·크기)상세 정보(권한·소유자)다. 이 두 가지만 손에 익으면 나머지 옵션은 거의 안 쓴다.

기본 형식

ls [옵션] [경로 ...]

경로를 생략하면 현재 디렉토리를 본다. 경로를 여러 개 주면 각각 나눠서 출력한다. 경로 자리에 파일명을 주면 그 파일 한 줄만 나온다.

자주 쓰는 옵션

옵션의미예시
-l권한·소유자·크기·수정시각을 한 줄로 출력ls -l /etc/nginx
-a숨김 파일(점으로 시작)까지 포함ls -a ~
-h크기를 K/M/G로 표시(-l과 같이 써야 의미 있음)ls -lh
-t수정 시각 내림차순(최신이 위)ls -lt /var/log
-r정렬 순서를 뒤집는다ls -ltr
-S파일 크기 내림차순ls -lhS
-d디렉토리 내용 말고 디렉토리 자체를 출력ls -ld /var/log
-1한 줄에 하나씩(스크립트·파이프용)ls -1 *.log
-i아이노드 번호 표시(하드링크 추적용)ls -li
-R하위 디렉토리까지 재귀 출력ls -R conf.d

실전 예제

1) 방금 무슨 파일이 바뀌었는지 본다 — 배포 직후나 장애 직후 가장 먼저 하는 확인이다.

ls -lt /var/log | head -20

출력은 다음 형태다. ls는 디렉토리 안의 항목만 나열하므로 nginx는 디렉토리 한 줄로 잡히고, 그 안의 access.log는 보이지 않는다.

total 2148
-rw-r----- 1 root adm    50231 Aug 25 09:12 syslog
-rw-r----- 1 root adm   118442 Aug 25 09:10 auth.log
drwxr-xr-x 2 root adm     4096 Aug 25 09:00 nginx
drwxr-xr-x 3 root root    4096 Aug 20 11:03 journal

2) 디스크를 잡아먹는 파일을 찾는다df로 파티션이 찼다는 걸 확인한 다음 단계다.

ls -lhS /var/log | head -10

3) 권한 문제 진단 — SSH가 안 되거나 서비스가 설정 파일을 못 읽을 때는 숨김 파일과 퍼미션을 같이 본다.

ls -la ~/.ssh

4) 디렉토리 자체의 권한 확인-d 없이 치면 안쪽 목록이 나와서 정작 보고 싶은 디렉토리 권한을 못 본다.

ls -ld /var/www/html

5) 오래된 것부터 훑기 — 로그 로테이션이 도는지, 언제부터 파일이 남아 있는지 볼 때 -ltr이 편하다. 마지막 줄이 최신이라 터미널을 스크롤하지 않아도 된다.

ls -ltr /backup

함정과 주의점

ls 출력을 스크립트에서 파싱하지 마라. 파일명에 공백이나 개행이 들어가면 for f in $(ls)는 그 자리에서 깨진다. 반복문은 셸 글롭(for f in *.log)이나 find ... -print0 | xargs -0를 쓴다.

-h는 단독으로는 아무 일도 안 한다. ls -h는 크기를 아예 출력하지 않으므로 표시가 달라지지 않는다. 반드시 -lh로 쓴다.

파일이 아주 많은 디렉토리에서 ls *는 실패한다. 글롭이 셸에서 먼저 전개되기 때문에 인자 길이 제한(Argument list too long)에 걸린다. 이 경우 ls만 치거나 find . -maxdepth 1 -name '*.log'를 쓴다.

배포판·OS 차이. GNU coreutils(리눅스)는 --time-style=long-iso2026-08-25 09:12 형식을 낼 수 있지만 macOS/BSD의 ls에는 이 옵션이 없다. 반대로 리눅스는 6개월이 지난 파일의 시각 자리에 연도를 찍어 분 단위를 감추므로, 정확한 시각이 필요하면 ls --full-time이나 stat을 쓴다.

색이 나오고 안 나오고는 ls 기능이 아니라 alias다. 배포판 기본 ~/.bashrcalias ls='ls --color=auto'가 들어 있는 경우가 많다. 색이 안 나온다고 옵션을 찾을 게 아니라 type ls로 alias부터 확인한다.

함께 보면 좋은 명령어

  • stat — 접근·수정·변경 시각을 초 단위까지, 아이노드와 블록 수까지 정확히 본다.
  • find — 조건(이름·시각·크기)으로 걸러야 할 때. ls로 눈으로 찾는 단계를 넘어서면 find로 간다.
  • du — ls는 디렉토리 자체 크기만 보여준다. 디렉토리가 실제로 차지하는 용량은 du -sh로 본다.