기본 문법
ls [옵션] [파일 또는 디렉터리...]
ls는 지정한 디렉터리 안에 있는 파일과 하위 디렉터리의 이름을 출력하는 명령어입니다. 인자를 주지 않으면 현재 디렉터리를 대상으로 하며, 파일 이름을 직접 지정하면 해당 파일의 정보만 보여줍니다. 옵션에 따라 권한·소유자·크기·시각 같은 상세 정보나 숨김 파일까지 함께 확인할 수 있습니다.
실무에서는 작업 디렉터리의 상태를 확인할 때 사용합니다. 로그나 백업 파일이 언제 생성되었는지, 권한이 의도대로 설정되었는지, 심볼릭 링크가 어디를 가리키는지 확인할 때 -l 옵션과 함께 사용합니다. 정렬 옵션을 붙이면 시간순·크기순으로 목록을 뽑을 수 있어 백업 로테이션이나 오래된 파일 정리 작업의 기준을 잡는 데 활용할 수 있습니다.
리눅스마스터·RHCSA·LPIC 시험에서는 -l 출력의 각 필드가 무엇을 의미하는지, -a와 -A의 차이, -d 옵션으로 디렉터리 자체를 보는 방법 등이 자주 출제됩니다. 실습 환경에서도 파일 권한과 링크 상태를 확인하는 검증 단계에서 자주 사용합니다.
아래 예시의 출력은 Rocky Linux 8(GNU coreutils 8.30) 컨테이너에서 LANG=C 환경으로 실행한 결과입니다. 날짜 표기는 로캘에 따라 달라지고, 권한 필드 끝의 점(.)은 SELinux 보안 컨텍스트가 있는 파일에 표시됩니다.
자주 쓰는 옵션
| 옵션 | 의미 | 예 |
|---|---|---|
-l | 권한, 링크 수, 소유자, 그룹, 크기, 수정 시각을 긴 형식으로 출력 | ls -l /etc |
-a | .으로 시작하는 숨김 파일과 . , .. 까지 모두 출력 | ls -a ~ |
-A | 숨김 파일은 출력하되 . 과 .. 는 제외 | ls -A /root |
-h | -l 또는 -s와 함께 써서 크기를 K, M, G 단위로 표시 | ls -lh /var/log |
-t | 수정 시각(mtime)이 최신인 순서로 정렬 | ls -lt /var/log |
-r | 정렬 순서를 역순으로 뒤집음 | ls -ltr /var/log |
-d | 디렉터리의 내용 대신 디렉터리 자체 정보를 출력 | ls -ld /tmp |
-S | 파일 크기가 큰 순서로 정렬 | ls -lS /var/log |
-i | 파일의 inode 번호를 함께 출력 | ls -li /tmp |
-R | 하위 디렉터리까지 재귀적으로 출력 | ls -R /etc/sysconfig |
실무 예시
디렉터리 내용 확인
준비: mkdir -p /tmp/demo/lslab; touch /tmp/demo/lslab/a.txt /tmp/demo/lslab/b.txt /tmp/demo/lslab/.hidden
$ ls /tmp/demo/lslab
a.txt
b.txt
옵션 없이 실행하면 숨김 파일을 제외한 이름만 알파벳순으로 출력됩니다. 출력이 터미널이면 여러 열로 표시되고, 파이프나 파일로 보내면 한 줄에 하나씩 출력됩니다. 아래 결과는 파일로 저장해 얻은 것이라 한 줄에 하나씩 나옵니다.
숨김 파일까지 상세 출력
준비: mkdir -p /tmp/demo/lslab; touch /tmp/demo/lslab/a.txt /tmp/demo/lslab/b.txt /tmp/demo/lslab/.hidden
$ ls -lA /tmp/demo/lslab
total 0
-rw-r--r--. 1 root root 0 Sep 16 12:07 .hidden
-rw-r--r--. 1 root root 0 Sep 16 12:07 a.txt
-rw-r--r--. 1 root root 0 Sep 16 12:07 b.txt
-A로 숨김 파일을 포함하고 -l로 권한·소유자·크기·시각을 확인합니다. . 과 .. 는 출력되지 않습니다. 첫 줄의 total은 해당 디렉터리 항목들이 차지하는 디스크 블록 합계입니다.
크기를 읽기 쉽게 표시
준비: mkdir -p /tmp/demo/lslab; dd if=/dev/zero of=/tmp/demo/lslab/big.bin bs=1M count=3 2>/dev/null
$ ls -lh /tmp/demo/lslab/big.bin
-rw-r--r--. 1 root root 3.0M Sep 16 12:07 /tmp/demo/lslab/big.bin
-h를 붙이면 바이트 대신 3.0M 같은 단위로 크기가 표시됩니다.
최신순 정렬로 백업 파일 확인
준비: mkdir -p /tmp/demo/rotatelab; cd /tmp/demo/rotatelab; for d in 0901 0902 0903 0904 0905; do touch backup_2026${d}.tar.gz; sleep 0.1; done
$ ls -t /tmp/demo/rotatelab/backup_*.tar.gz
/tmp/demo/rotatelab/backup_20260905.tar.gz
/tmp/demo/rotatelab/backup_20260904.tar.gz
/tmp/demo/rotatelab/backup_20260903.tar.gz
/tmp/demo/rotatelab/backup_20260902.tar.gz
/tmp/demo/rotatelab/backup_20260901.tar.gz
-t는 수정 시각이 최신인 파일부터 나열합니다. 백업 로테이션에서 남길 파일과 지울 파일을 구분하는 기준으로 쓸 수 있습니다. 여기서는 파일을 만든 순서가 곧 최신순이라 파일명 날짜와 순서가 일치합니다.
최신 3개를 제외한 오래된 백업 목록 뽑기
준비: mkdir -p /tmp/demo/rotatelab; cd /tmp/demo/rotatelab; for d in 0901 0902 0903 0904 0905; do touch backup_2026${d}.tar.gz; sleep 0.1; done
$ ls -t /tmp/demo/rotatelab/backup_*.tar.gz | tail -n +4
/tmp/demo/rotatelab/backup_20260902.tar.gz
/tmp/demo/rotatelab/backup_20260901.tar.gz
최신순 목록에서 4번째 줄부터 출력하므로 최신 3개를 뺀 삭제 후보만 남습니다. 삭제까지 자동화하려면 목록을 눈으로 확인한 뒤에만 진행하고, 파일명에 공백이나 개행이 없는 것이 확실한 경우에 한정하세요. 파일명을 신뢰할 수 없는 환경에서는 find의 -print0과 xargs -0을 사용하는 것이 안전합니다.
심볼릭 링크와 디렉터리 자체 정보 보기
준비: mkdir -p /tmp/demo/lnlab/target; ln -sfn /tmp/demo/lnlab/target /tmp/demo/lnlab/link
$ ls -ld /tmp/demo/lnlab/link /tmp/demo/lnlab/target
lrwxrwxrwx. 1 root root 22 Sep 16 12:07 /tmp/demo/lnlab/link -> /tmp/demo/lnlab/target
drwxr-xr-x. 2 root root 6 Sep 16 12:07 /tmp/demo/lnlab/target
-d를 쓰면 디렉터리 내용 대신 항목 자체가 표시되어, 링크가 가리키는 경로를 그대로 확인할 수 있습니다. 심볼릭 링크의 권한 표시(lrwxrwxrwx)는 링크 파일 자체의 값이며, 실제 접근 권한은 대상 파일의 권한을 따릅니다.
주의할 점
- ls 출력을 파이프로 처리할 때 파일명에 공백이나 개행이 있으면 잘못 분리됩니다. 스크립트에서는 find -print0 과 xargs -0 을 쓰는 편이 안전합니다.
- -l 없이 -h만 쓰면 크기가 표시되지 않아 효과가 없습니다. -h는 크기를 출력하는 -l, -s 등과 함께 써야 합니다.
- -d를 빼고 디렉터리를 지정하면 그 안의 내용이 나옵니다. 디렉터리 자체의 권한을 볼 때는 -ld 를 사용하세요.
- -t는 수정 시각(mtime) 기준입니다. touch 등으로 시각이 바뀐 파일은 파일명에 적힌 날짜와 순서가 달라질 수 있습니다.
- 출력 형식은 환경에 따라 달라집니다. 터미널 여부에 따라 열 배치가 바뀌고, 날짜 표기는 로캘(LANG)에 따라 달라지므로 스크립트에서 ls 출력을 파싱하는 것은 권장하지 않습니다.
- ls 목록을 그대로 rm 에 넘기기 전에는 먼저 목록만 출력해 확인하세요. 와일드카드 범위를 잘못 지정하면 남겨야 할 파일까지 삭제됩니다.
이 명령어로 풀 수 있는 실습 문제
브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.
관련 명령어
마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.
