Logo

ls 쉘 커맨드 사용법

맥이나 리눅스 터미널에서 가장 자주 사용하는 커맨드 중에 하나인 ls에 대해서 알아보도록 하겠습니다. ls는 파일이나 디펙토리 목록을 나열하기 위해서 사용하는 리눅스 커맨드입니다.

파일과 디렉터리 나열하기

단순히 현재 디렉터리 내의 어떤 파일과 디렉터리가 있는지를 보려면 터미널에 ls라고 입력합니다. 기본적으로는 알파벳 순으로 나옵니다.

$ ls
README.md    dist         node_modules package.json run.sh       src

확장자 여부로 파일과 디렉터리를 유추할 수 있지만 좀 더 명확하게 파일과 디렉터리가 구분되었으면 좋겠습니다.

파일과 디렉터리 구분하기

-F 옵션을 사용하면 디렉터리 이름 뒤에는 / 기호가 붙습니다. 또한 실행가능한 파일 뒤에는 * 기호가 붙습니다.

$ ls -F
README.md     dist/         node_modules/ package.json  run.sh*       src/

뿐만 아니라 심볼릭 링크 뒤에는 @ 기호가 붙어서 일반 파일이나 디렉터리와 대비되어 보입니다.

시간 순으로 나열하기

-t 옵션을 사용하면 최근에 수정한 파일이 먼저 나오고 예전에 수정한 파일은 나중에 나옵니다.

$ ls -t
run.sh       README.md    package.json node_modules dist         src

크기 순으로 나열하기

-S 옵션을 사용하면 크기가 큰 파일이 먼저 나오고 크기가 작은 파일이 나중에 나옵니다.

$ ls -S
node_modules package.json dist         src          README.md    run.sh

역순으로 나열하기

-r 옵션을 사용하면 알파멧 역순으로 나열됩니다. -t-S 조합해서 사용하면 시간 역순, 크기 역순으로도 정렬할 수 있습니다.

$ ls -r
src          run.sh       package.json node_modules dist         README.md
$ ls -tr
src          dist         node_modules package.json README.md    run.sh
$ ls -Sr
run.sh       README.md    src          dist         package.json node_modules

숨긴 파일 보기

-A 옵션을 사용하면 .으로 시작하는 숨겨진 파일까지 확인할 수 있습니다.

$ ls -A
.git         .gitignore     README.md    dist         node_modules package.json run.sh       src

-a 옵션을 사용하면 ...까지 함께 출력됩니다.

$ ls -a
.            ..           .git         .gitignore      README.md    dist         node_modules package.json run.sh       src

참고로 여기서 .는 현재 디렉터리 ..는 상위 디렉터리를 의미합니다. cd .cd ..가 동작하는 이치랑 같습니다.

상세하게 확인하기

-l 옵션을 사용하면 좀 더 자세한 정보를 파일이나 디렉터리마다 한줄씩 여러 줄에 출력합니다.

$ ls -l
total 8
-rw-r--r--    1 dale  staff     51  8 Aug 16:37 README.md
drwxr-xr-x    4 dale  staff    128  7 Aug 16:45 dist
drwxr-xr-x  507 dale  staff  16224  7 Aug 16:46 node_modules
-rw-r--r--    1 dale  staff    371  7 Aug 16:46 package.json
-rwxr--r--    1 dale  staff     33 10 Aug 16:43 run.sh
drwxr-xr-x    3 dale  staff     96  7 Aug 09:15 src

크기를 쉽게 알아보기

-hl 옵션을 사용하시면 파일이나 디렉터리 크기에 단위가 붙어서 읽기 편한 상태로 표시됩니다. (예. 1K 234M 2G)

$ ll -hl
total 8
-rw-r--r--    1 dale  staff    51B 10 Aug 16:37 README.md
drwxr-xr-x    4 dale  staff   128B  7 Aug 16:45 dist
drwxr-xr-x  507 dale  staff    16K  7 Aug 16:46 node_modules
-rw-r--r--    1 dale  staff   371B  7 Aug 16:46 package.json
-rwxr--r--    1 dale  staff    33B 10 Aug 16:43 run.sh
drwxr-xr-x    3 dale  staff    96B  7 Aug 09:15 src

디렉터리 자체 정보 보기

ls 커맨드 다음에 파일 이름을 붙이면 파일에 대한 정보를 표시하지만 디렉터리를 붙이면 디렉터리 내부에 있는 파일과 디렉터리를 나열합니다.

$ ls -l package.json
-rw-r--r--  1 dale  staff  371  7 Aug 16:46 package.json
$ ls -l dist
total 1488
-rw-r--r--@ 1 dale  staff    2294  7 Aug 22:21 index.html
-rw-r--r--  1 dale  staff  753927  7 Aug 16:45 main.js

이럴 때는 -d 옵션을 주시면 디렉터리 자체에 대한 정보만을 확인할 수 있습니다.

$ ls -dl dist
drwxr-xr-x  4 dale  staff  128  7 Aug 16:45 dist

패턴 매칭하기

ls 커맨드는 Globs 패턴 매칭도 지원합니다.

$ ls src/*.{ts,tsx}
src/App.test.tsx       src/App.tsx            src/index.tsx          src/react-app-env.d.ts src/reportWebVitals.ts src/setupTests.ts

한 번에 여러 파일을 찾을 때 사용하는 Glob Pattern에 대한 자세한 내용은 관련 포스팅을 참고바랍니다.

옵션 조합하기

위에 나온 옵션들을 다양하게 조합해서 사용할 수 있습니다. 예를 들어 아래는 숨긴 파일까지 포함해서 크기는 읽기 쉬운 형태로 파일과 디렉터리 구분해서 상세하게 표시하기 위한 커맨드입니다.

$ ls -ahlF
total 8
drwxr-xr-x   11 dale  staff   352B 10 Aug 16:55 ./
drwxr-xr-x    8 dale  staff   256B  9 Aug 22:11 ../
drwxr-xr-x    9 dale  staff   288B 10 Aug 17:29 .git/
-rw-r--r--    1 dale  staff   214B 10 Aug 16:55 .gitignore
-rw-r--r--    1 dale  staff    51B 10 Aug 16:37 README.md
drwxr-xr-x    4 dale  staff   128B  7 Aug 16:45 dist/
drwxr-xr-x  507 dale  staff    16K  7 Aug 16:46 node_modules/
-rw-r--r--    1 dale  staff   371B  7 Aug 16:46 package.json
-rwxr--r--    1 dale  staff    33B 10 Aug 16:43 run.sh*
drwxr-xr-x    3 dale  staff    96B  7 Aug 09:15 src/

추가 Tip. Alias로 등록하기

ls 커맨드는 워낙 자주 사용하는 커맨드이기 때문에 즐겨쓰는 옵션과 함께 alias로 등록해두면 매번 타이핑할 필요가 없기 때문에 편리합니다.

$ alias ll='ls -ahlF'
$ ll
total 8
drwxr-xr-x   11 dale  staff   352B 10 Aug 16:55 ./
drwxr-xr-x    8 dale  staff   256B  9 Aug 22:11 ../
drwxr-xr-x    9 dale  staff   288B 10 Aug 17:29 .git/
-rw-r--r--    1 dale  staff   214B 10 Aug 16:55 .gitignore
-rw-r--r--    1 dale  staff    51B 10 Aug 16:37 README.md
drwxr-xr-x    4 dale  staff   128B  7 Aug 16:45 dist/
drwxr-xr-x  507 dale  staff    16K  7 Aug 16:46 node_modules/
-rw-r--r--    1 dale  staff   371B  7 Aug 16:46 package.json
-rwxr--r--    1 dale  staff    33B 10 Aug 16:43 run.sh*
drwxr-xr-x    3 dale  staff    96B  7 Aug 09:15 src/

마치면서

이상으로 ls 커맨드 사용법에 대해서 알아보았습니다. 지금까지 다루웠던 옵션들을 최종 정리를 해보면 다음과 같습니다.

옵션 기능
-F 파일/디렉터리 구분
-t 시간 정럴
-S 크기 정렬
-r 역순 정렬
-A(-a) 숨긴 파일 보기
-l 상세 보기
-h 단위 보기
-d 디렉터리 자체 보기