리눅스 / 명령어 / ls / 디렉토리와 파일 목록 출력하는 명령어
Linux의 ls 명령은 디렉터리 안의 파일과 하위 디렉터리 목록을 표시합니다. ls -la를 사용하면 숨김 항목을 포함해 권한, 소유자, 크기와 수정 시각 등 자세한 정보를 볼 수 있습니다.
현재 디렉터리와 지정한 경로의 목록 보기
터미널에서 다음 명령을 실행하면 현재 작업 디렉터리의 항목을 표시합니다. 현재 위치는 pwd로 확인할 수 있습니다.
pwd
ls
다른 디렉터리의 내용을 보려면 경로를 지정합니다. 절대 경로와 현재 위치를 기준으로 하는 상대 경로를 모두 사용할 수 있습니다.
ls /var
기본적으로 이름이 점으로 시작하는 숨김 항목은 목록에서 빠집니다. 이름과 표시 순서는 시스템과 로캘 설정에 따라 다릅니다. ls는 목록을 읽는 명령이며 파일을 삭제하거나 수정하지 않습니다.
숨김 항목과 상세 정보 보기
-a는 점으로 시작하는 이름을 포함하고, -l은 상세 형식으로 표시합니다. 두 옵션을 합쳐 사용할 수 있습니다.
ls -a
ls -l
ls -la
ls -a에는 현재 디렉터리를 뜻하는 .과 상위 디렉터리를 뜻하는 ..도 나타납니다. GNU ls -A는 숨김 항목은 표시하되 이 두 항목은 생략합니다. 크기를 읽기 쉬운 단위로 표시하려면 상세 목록에 -h를 추가하세요.
ls -lah
예를 들어 1K, 2M처럼 표시할 수 있습니다. 출력값은 대상 파일과 시스템 설정에 따라 달라집니다.
상세 목록 읽기
다음은 일반 파일을 표시한 예시입니다. 날짜 형식과 이름, 숫자는 실제 환경에 따라 달라집니다.
-rw-r--r-- 1 user group 12 Jan 15 10:30 notes.txt
-rw-r--r--: 첫 글자-는 일반 파일, 나머지는 소유자·그룹·다른 사용자의 권한을 나타냅니다.d로 시작하면 디렉터리,l로 시작하면 심볼릭 링크입니다.1 user group: 하드 링크 수, 소유자, 소유 그룹입니다.12: 기본 상세 목록의 파일 크기(바이트)입니다.-h를 쓰면 읽기 쉬운 단위로 바뀝니다.Jan 15 10:30 notes.txt: 기본적으로 마지막 수정 시각과 이름입니다. 출력 형식은 로캘과 옵션에 따라 다릅니다.
디렉터리의 크기 항목은 그 안의 파일 크기를 모두 더한 값이 아닙니다. 디렉터리 전체의 디스크 사용량을 확인할 때는 du 같은 도구를 사용하세요. 링크의 대상은 상세 목록에서 보통 name -> target 형태로 표시됩니다.
정렬과 디렉터리 자체 확인하기
-t는 기본적으로 수정 시각이 최신인 항목부터 정렬합니다. -r을 함께 쓰면 순서가 반대로 바뀝니다.
ls -lt
ls -ltr
디렉터리 안의 목록이 아니라 디렉터리 자체의 권한과 소유자를 확인하려면 -d를 사용합니다.
ls -ld /var
-R은 하위 디렉터리도 재귀적으로 나열하므로 큰 경로에서는 출력이 많아질 수 있습니다. 옵션의 자세한 의미는 GNU ls 매뉴얼이나 man ls에서 확인하세요.
이름 패턴으로 목록 좁히기
Bash에서 별표 *는 0개 이상의 문자에 일치하는 이름 패턴입니다. 다음 명령은 /etc에서 이름이 .conf로 끝나는 항목을 찾습니다.
ls -d /etc/*.conf
셸이 먼저 패턴에 맞는 이름을 확장한 뒤 ls에 전달합니다. -d를 넣었으므로 일치하는 디렉터리가 있더라도 그 내부가 아니라 디렉터리 이름을 표시합니다. 일반적인 Bash 설정에서는 이름이 점으로 시작하는 숨김 항목이 자동으로 일치하지 않습니다. 일치하는 이름이 없을 때는 셸 옵션에 따라 오류가 나거나 패턴이 그대로 전달되는 등 결과가 달라질 수 있습니다.
경로에 공백이 있다면 ls "my folder"처럼 경로를 따옴표로 묶습니다. 패턴까지 따옴표로 묶으면 일반적으로 셸이 별표를 확장하지 않습니다. 자세한 내용은 Bash 파일 이름 확장 문서를 참고하세요.
디스크 장치와 오류 확인하기
ls -l /dev/sd*는 이름이 sd로 시작하는 장치 파일에 일치하는 목록을 보여 줄 수 있습니다. 그러나 모든 디스크와 파티션이 이 이름을 쓰지는 않습니다. NVMe 등 다른 장치는 목록에 빠질 수 있으므로, 블록 장치와 계층을 살펴볼 때는 lsblk를 사용하는 것이 더 적합합니다.
lsblk
목록이 보이지 않거나 Permission denied가 나오면 경로의 존재 여부와 접근 권한을 확인하세요. 출력이 예상과 다르다면 셸 별칭을 type ls로 확인하고, 배포판과 ls --help의 옵션 설명도 살펴보세요.




